Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Przypomnienie hasła poprzez podanie email
Max Damage
post 30.07.2007, 12:56:08
Post #1





Grupa: Zarejestrowani
Postów: 246
Pomógł: 19
Dołączył: 14.06.2007

Ostrzeżenie: (0%)
-----


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


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on właśnie to robi." - Albert Einstein
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
janus
post 30.07.2007, 13:30:25
Post #2





Grupa: Nieautoryzowani
Postów: 17
Pomógł: 0
Dołączył: 16.05.2005

Ostrzeżenie: (0%)
-----


Błędem są linie nr 23 i 24
Pobierasz nimi wynik polecenia UPDATE.
Wystarczy że wywalisz te 2 linijki i powinno działać.
Go to the top of the page
+Quote Post
Max Damage
post 30.07.2007, 13:49:11
Post #3





Grupa: Zarejestrowani
Postów: 246
Pomógł: 19
Dołączył: 14.06.2007

Ostrzeżenie: (0%)
-----


Nie pomogło niestety. Nadal nie działa.


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on właśnie to robi." - Albert Einstein
Go to the top of the page
+Quote Post
janus
post 30.07.2007, 14:03:49
Post #4





Grupa: Nieautoryzowani
Postów: 17
Pomógł: 0
Dołączył: 16.05.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Max Damage
post 30.07.2007, 17:15:07
Post #5





Grupa: Zarejestrowani
Postów: 246
Pomógł: 19
Dołączył: 14.06.2007

Ostrzeżenie: (0%)
-----


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?


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on właśnie to robi." - Albert Einstein
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:30