Formularz wysyłania maila. Problem z else

Witam!

Mam taki kod:

<?php

if (isset($_POST['email'])) {

$sql = "SELECT * FROM users WHERE email='".$_POST['email']."' ";


$result = mysql_query($sql);


if (mysql_num_rows($result)) {

$row = mysql_fetch_array($result);


else {

if ($_POST['email'] == '".$row['email']."') {

echo "Hasło zostało wysłane";


$subject = 'Przypomnienie hasła do serwisu ...';

$body = 'Przypominamy, iż Twoje hasło do serwisu ... jest następujące: ';


mail($_POST['email'], $subject, $body)

or die('Nieudane wysłanie listu email z przypomnieniem');

}

}

}

echo "";

}

?>

| Twój e-mail: | |

[/code]

Ale kiedy otwieram stronę wyświetla się komunikat

Dodam że mam połączenie z bazą danych. Co może być przyczyną wyświetlania tego komunikaty?

Pozdrawiam i z góry dziękuje!

Na moje to brakuje nawiasu przed else zamykającego if

to ma być w tym.

Nie wiem co to else ma robić, ale kolejność nawiasów jest ekstra.

Niewspominając o składni, dołączaniu zbędnych, pustych ciągów i ich wyświetlaniu, braków wcięć, bezpieczeństwie, logice i takie tam :stuck_out_tongue:

Nadal prymitywne, ale nie wywali błędu (nie powinno)

<?php

    if (isset($_POST['email'])) {

      $sql = 'SELECT * FROM users WHERE email='.$_POST['email'];


      $result = mysql_query($sql);


      if (mysql_num_rows($result)) {

        $row = mysql_fetch_array($result);


          if ($_POST['email'] == $row['email']) {

            echo "Hasło zostało wysłane";


            $subject = 'Przypomnienie hasła do serwisu ...';

            $body = 'Przypominamy, iż Twoje hasło do serwisu ... jest następujące: ';


            mail($_POST['email'], $subject, $body)

            or die('Nieudane wysłanie listu email z przypomnieniem');

            }

        }

    }

    ?>

| Twój e-mail: | |

[/code]

Choć uważam, że lepiej abyś poczytał w internecie o bezpieczeństwie takich aplikacji i jakoś to wykorzystał…

Coś tu nie działa, dokładniej zauważyłem że:

  1. W $sql = ‘SELECT * FROM users WHERE email=’.$_POST[‘email’]; brak zakończenia .’ , kiedy je dodam wyświetla się błąd.

  2. W twoim kodzie wyświetla się :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ…\zapomnialemhasla.php on line 7

To go nie dodawaj, dobrze było bez tego, poczytaj o składaniu łańcuchów znaków w php

Czy Twój skrypt w ogóle łączy się z bazą danych?

tak

W takim razie robisz to albo źle, albo serwer bazy danych nie odpowiada, albo nie znasz struktury swojej bazy danych (co mogło by powodować, że zapytanie select nie zwraca odpowiednich rezultatów), możesz próbować dodać do skryptu pewnego rodzaju diagnostykę poprzez konstrukcję or die(mysql_error()); wszędzie tam gdzie odbywa się interakcja z bazą danych. Postaraj się by Twoje odpowiedzi były mniej lakoniczne niż poprzednia, bo ciężko cokolwiek z nich wywnioskować.

Struktura jest dobra, baza danych działa. or die(mysql_error()); nie pomaga.

Pole Typ Metoda porównywania napisów Atrybuty

id int(11) Nie auto_increment

nick varchar(20) utf8_general_ci Nie

imie varchar(50) utf8_general_ci Nie

nazwisko varchar(50) utf8_general_ci Nie

email varchar(100) utf8_general_ci Nie

haslo varchar(50) utf8_general_ci Nie