Chce na mojej stronie umiescic mozliwosc "Zapomnialem haslo". Po kliknieciu i podaniu nazwy uzytkownika na podany wczesniej adres email przychodzi losowo wygenerowane hasło, ktore nalezy uzyc do zalogowania sie. System uzywa bazy danych. Hasło generowane jest 2 etapach: 1) Wybranie losowe słowa ze słownika, 2) Generowanie ciagu liczb, które zostana "dolepione" do pobranego slowa.
Problem: System widzi słownik, pytanie czy jest on dobry, ale probowalem na dwoch roznych i jest to samo. System wysyla email, poprawnie informujac o nazwie uzytkownika lecz zmienna $haslo jest pusta. Takze wpis w bazie danych pozostaje niezmieniony. Nie wyskakuje zaden blad (jesli usune slownik calkowicie to blad sie ukazuje, wiec slownik 'widzi' jak mniemam).
Kody:
Pik wywołujacy:
<?php $nazwa_uz = $_POST['nazwa_uz']; try { $haslo=ustaw_haslo($nazwa_uz); powiadom_haslo($nazwa_uz, $haslo); } catch (Exception $e) { } tworz_HTML_URL('logowanie.php', 'Logowanie'); ?>
Plik operujący:
<?php function pobierz_losowe_slowo($dlugosc_min, $dlugosc_max) { $slowo = ''; $slownik = 'english.txt'; // słownik ispell if(!$wp) return false; { }; return $slowo; } function ustaw_haslo($nazwa_uz) { $nowe_haslo = pobierz_losowe_slowo(6, 13); if($nowe_haslo==false) throw new Exception('Wygenerowanie nowego hasła nie powiodło się.'); $nowe_haslo .= $losowa_liczba; $lacz = lacz_bd_r(); return false; $wynik = $lacz->query("update autorzy set haslo = sha1('$nowe_haslo') where nazwa_uz = '$nazwa_uz'"); if (!$wynik) throw new Exception('Zmiana hasła nie powiodła się.'); else return $nowe_haslo; } function powiadom_haslo($nazwa_uz, $haslo) { $lacz = lacz_bd_r(); $wynik = $lacz->query("select email from autorzy where nazwa_uz='$nazwa_uz'"); if (!$wynik) { throw new Exception('Nie znaleziono adresu e-mail'); } else if ($wynik->num_rows==0) { throw new Exception('Nie znaleziono adresu e-mail'); } else { $wiersz = $wynik->fetch_object(); $email = $wiersz->email; $od = "From: admin@admin.pl r\n"; $wiad = "Hasło do systemu z portfolio dla uzytkownika $nazwa_uz zostało zmienione na $haslo r\n" ."Proszę zmienić je przy następnym logowaniu. r\n"; return true; else throw new Exception('Wysłanie e-maila nie powiodło się'); } } ?>