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!
Sunmar
(Marcussmail)
15 Luty 2008 19:08
#2
Na moje to brakuje nawiasu przed else zamykającego if
crew1
(L337 Crew)
15 Luty 2008 20:40
#4
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
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:
W $sql = ‘SELECT * FROM users WHERE email=’.$_POST[‘email’]; brak zakończenia .’ , kiedy je dodam wyświetla się błąd.
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
Airborn
(Airborn)
16 Luty 2008 15:33
#6
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?
Airborn
(Airborn)
16 Luty 2008 15:42
#8
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