![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam, jestem tu nowy na forum.
Wiec tak.. Postępowałem według opisu "lukaswoj" z tego tematu http://forum.php.pl/index.php?showtopic=16...mp;hl=aktywacja Zbudowałem skrypt który będzie wysyłał losowe hasło do użytkownika kiedy go zapomni. Hasła mam w kodowane w md5 w bazie danych dlatego użyłem skryptu który losuje nowe. Skrypt działa w następujący sposób: Wypełniasz formularz, jeśli email sie zgadza, wysyłany jest do Ciebie link z wygenerowanym przy rejestracji hashu. Jeśli klikniesz w link zostajesz przekierowany na strone ktora sprawdza czy hash zgadza sie z tym w bazie danych, jeśli tak to wysyła nowe, losowe hasło na email i generuje nowy hash ktory jest wprowadzany do bazy danych. Prosze o pomoc, z góry dzięki. //Edit: Udało mi sie rozwiązać mój problem, niżej podaje gotowy działający skrypt i prosze o przeniesienie do odpowiedniego działu np. z 'gotowcami' Teraz kod.. pierw lost_pass.php Kod <? // By: KriSsu // E-mail: krzy49@gmail.com // Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;) ?> <br> <table width="540"> <form action="confirm.php" method="post"> <tr><td>Email:</td><td> <input type="text" name="email"></td></tr> <tr><td> <br> <input type="submit" value="Wyślij nowe hasło!" /> </td></tr> </form> </table> <br> confirm.php: Kod <? // By: KriSsu // E-mail: krzy49@gmail.com // Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;) $dbhost = 'localhost'; // Serwer bazy danych $dbuser = 'root'; // Nazwa użytkownika bazy danych $dbpass = 'kriss49'; // Hasło użytkownika bazy danych $dbname = 'users'; // Nazwa bazy danych // Połącz z bazą danych, jeśli wystąpią problemy, wyświetl błąd $dbc = @mysql_connect ($dbhost, $dbuser, $dbpass) or die ('Nie można połączyć sie z bazą danych. Przepraszamy z niedogodności.'); mysql_select_db ($dbname) or die ('Problemy z baza danych. Przepraszamy z niedogodności'); // Pobierz dane gdzie email = '$_POST[email]' $email = $_POST[email]; $uchwyt = mysql_query("SELECT * FROM users WHERE email='$_POST[email]'") or die(mysql_error()); $row = mysql_num_rows($uchwyt); // Jeśli istnieje, wyślij email z hash'em if ($row == 1) { $query = "SELECT * FROM users WHERE email='$_POST[email]'"; $result = mysql_query ($query); while($wiersz=mysql_fetch_array ($result)) { $email_wiadomosc = "http://localhost/new_pass.php?id=$wiersz[id]hash=$wiersz[hash]"; } $email_temat = "Nowe hasło"; if(mail($email, $email_temat, $email_wiadomosc)){ echo "Twoje nowe hasło zostało wysłane na podany adres e-mail."; } else { echo "Nie udało się wysłać wiadomości, przepraszamy."; } } // Jeśli nie istnieje, wyświetl błąd elseif ($row == 0) { echo 'Podany adres e-mail nie znajduje w naszej bazie danych!'; } ?> generator.php: Kod <? // By: KriSsu // E-mail: krzy49@gmail.com // Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;) $tabelka = '1234567890qwertyuiopasdfghjkklzxcvbnm'; $new_hash = ''; for ($i=0; $i<30; $i++) // 30 to długość ciągu { $new_hash .= $tabelka[rand()%(strlen($tabelka))]; } ?> <? function random_string($length){ $string = md5(time()); $string = substr($string,0,$length); return($string); } $new_pass = random_string(8); ?> i ostatni new_pass.php: Kod <?
// By: KriSsu // E-mail: krzy49@gmail.com // Róbcie z skryptem co chcecie ale zostawcie te linijki z prawami autora w spokoju;) if (strlen($_GET['hash']) != 30){ die(); } else { $dbhost = 'localhost'; // Serwer bazy danych $dbuser = 'root'; // Nazwa użytkownika bazy danych $dbpass = ''; // Hasło użytkownika bazy danych $dbname = 'english_users'; // Nazwa bazy danych // Połącz z bazą danych, jeśli wystąpią problemy, wyświetl błąd $dbc = @mysql_connect ($dbhost, $dbuser, $dbpass) or die ('Nie można połączyć sie z bazą danych. Przepraszamy z niedogodności.'); mysql_select_db ($dbname) or die ('Problemy z baza danych. Przepraszamy z niedogodności'); // Pobierz dane gdzie hash = '$_GET[key]' $uchwyt = mysql_query("SELECT * FROM users WHERE hash='$_GET[hash]'") or die(mysql_error()); $row = mysql_num_rows($uchwyt); // Jeśli istnieje, wygeneruj nowy hash i wyślij email z nowym wygenerowanym hasłem if ($row == 1) { // Podłączanie skryptu generującego nowy hash i nowe hasło include('generator.php'); // Pobieranie emaila użytkownika $query = "SELECT * FROM users WHERE hash='$_GET[hash]'"; $result = mysql_query ($query); while($wiersz=mysql_fetch_array ($result)) { $email = "$wiersz[email]"; } $email_temat = "Temat"; $email_wiadomosc = "$new_pass"; // Wysyłanie wiadomości z hasłem if(mail($email, $email_temat, $email_wiadomosc)){ echo('Nowe hasło zostało wysłane na twój adres e-mail!'); } else { echo "Nie udało się wysłać wiadomości, przepraszamy."; } $pytanie = "UPDATE `users` SET `hash`='$new_hash', `pass`='$new_pass' WHERE `id`='$_GET[id]'"; $edit = mysql_query ($pytanie); } // Jeśli nie istnieje, wyświetl błąd elseif ($row == 0) { echo('Błędy link potwierdzający!'); } } ?> Ten post edytował KriSsu 30.08.2008, 19:33:33 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 23:29 |