Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Przypomnienie hasła poprzez podanie email
Forum PHP.pl > Forum > PHP
Max Damage
Użytkownik zapomniał hasła do loginu, więc wpisuje swój adres email. Ja sprawdzam czy taki istnieje w bazie, ustawiam losowe hasło, zmieniam w bazie i mu przesyłam. Czyli norma na większości stron chyba.
Nie mam pojęcia co nie działa, nie wyskakują żadne błędy.

  1. <?php
  2. require_once('f_prawidlowe_dane.php');
  3. $email=$_POST['email'];
  4.  
  5. try 
  6. {
  7. $lacz=lacz_bd();
  8. //sprawdzenie czy podany adres istnieje w bazie
  9. $wynik=$lacz->query("select email from uzytkownik where email='$email'");
  10.  if(!wynik)
  11.  throw new exception ('Nie znaleziono adresu emial');
  12. else
  13.  //utworzenie losowego hasla i zmiana w bazie danych
  14.  {
  15. $nowe_haslo= substr(md5(uniqid(rand(), true)), rand(0,27), 12);
  16. $wynik=$lacz->query("update uzytkownik set haslo='$nowe_haslo' where email='$email'");
  17. if(!wynik)
  18. throw new exception ('Zmiana hasla nie powiodla sie');
  19. else
  20. return $nowe_haslo;
  21.  }
  22. //wyslanie hasla na email
  23. $wiersz=$wynik->fetch_object();
  24. $email=$wiersz->email;
  25. $od="Od: maxdamagee";
  26. $temat="Zmiana hasla";
  27. $wiad="Haslo zostało zmienione na $nowe_haslo";
  28. if(mail($email, $temat, $wiad, $od))
  29. return true;
  30.  else
  31.  throw new exception ('Wysylanie email nie powiodlo sie');
  32. }
  33. catch (exception $e)
  34. {
  35. echo $e->getMessage();
  36. }
  37. echo 'haslo zostalo zmienione';
  38. ?>


To jest mój trzeci w pełni samodzielnie napisany skrypt więc za bardzo się na mnie nie wyżywajcie... winksmiley.jpg
janus
Błędem są linie nr 23 i 24
Pobierasz nimi wynik polecenia UPDATE.
Wystarczy że wywalisz te 2 linijki i powinno działać.
Max Damage
Nie pomogło niestety. Nadal nie działa.
janus
To wpisz jeszcze w 25 linii poprawną składnie nadawcy:
$od="From: maxdamagee";
I sprawdź czy w zmiennej $email przed funkcją "mail" dalej masz adres odbiorcy.
Max Damage
Może trochę głupie pytanie, ale jak mam sprawdzić tą zmienną?

Ok, sprawdziłem tą zmienna w kilku róźnych miejscach. Problemem były linie 19 i 20. Wykasowałem je oczywiście. Zmieniłem także drugie zapytanie do bazy na $wynik2. Linie 23 i 24 dopisałem z powrotem, teraz pobierają adres email z tego pierwszego zapytania do bazy (choć to czy są czy nie i tak póki co nie robi różnicy). No i powinno już wysłać email, jednak ciągle pisze: Wysylanie email nie powiodlo sie. Ktoś wie dlaczego?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.