Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Skrypt przypomnienia hasła
Forum PHP.pl > Forum > Przedszkole
adrianozo
Witam.
Napisałem jakiś tam skrypt przypomnienia(wygenerowania nowego hasła)
Chciałbym się dowiedzieć co tutaj z nim jest nie tak. Wszystko działa tylko może coś źle obmyśliłem?
Proszę o porady.

  1. <?php
  2. if(isset($_POST['email']))
  3. {
  4. echo '<div align="center"><form action="index.php?page=lostpassword" method="post">
  5. <input type="hidden" name="send" value="1">
  6. <br />Podaj adres email:<input type="text" name="email" value="'.$_POST['email'].'" /><br /><br />
  7. <input class="przycisk_admin" name="reset" type="submit" value="Resetuj hasło">
  8. </form><br /><br /></div>';
  9. }
  10. else
  11. {
  12. echo '<div align="center"><form action="index.php?page=lostpassword" method="post">
  13. <input type="hidden" name="send" value="1">
  14. <br />Podaj adres email:<input type="text" name="email" /><br /><br />
  15. <input class="przycisk_admin" name="reset" type="submit" value="Resetuj hasło">
  16. </form><br /><br /></div>';
  17. }
  18. if(isset($_POST['reset']))
  19. {
  20. $zapytanie = mysql_query("SELECT * FROM `user` WHERE `email` = '".$_POST['email']."'");
  21. if(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  22. {
  23. echo '<font color="red">Podany email jest nieprawidłowy.</font><br />';
  24. }
  25. elseif(!mysql_num_rows($zapytanie))
  26. {
  27. echo 'Nie znaleziono takiego adresu email!';
  28. }
  29. else
  30. {
  31. while($wiersz = mysql_fetch_array($zapytanie))
  32. {
  33. $email = $wiersz['email'];
  34. }
  35. $haslo = substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , 10);
  36. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  37. $nowehaslo = "INSERT INTO `hasla` (`email`, `haslo`, `klucz`) VALUES ('".$email."', '".$haslo."', '".$kod."')";
  38. $idnowehaslo = mysql_query($nowehaslo) or die(mysql_error());
  39. $naglowki = 'MIME-Version: 1.0' . "\r\n";
  40. $naglowki .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  41. $naglowki .= 'To: <>' . "\r\n";
  42. $naglowki .= 'From: <gazetka.sieniu.czest.pl>' . "\r\n";
  43. mail($email, 'Przypomnienie hasła na gazetka.sieniu.czest.pl', '<html><body><br /><b>Witaj <b>'.$loginek.'</b>!<br /><br /><br />Na koncie <b>'.$loginek.'</b> zostało zresetowane hasło.<br /><b>Nowe hasło brzmi: '.$haselko.'</b><br /><br />W celu potwierdzenia zmiany hasła kliknij w poniższy odnośnik:<br /><a href="http://gazetka4lo.cba.pl/index.php?page=lostpassword&code='.$kod.'">http://gazetka4lo.cba.pl/index.php?page=lostpassword&code='.$kod.'</a><br /><br />Jeśli nie resetowałeś hasła na koncie <b>'.$loginek.'</b> po prostu zignoruj tego maila.<br /><br /><br />------<br />Wiadomość wygenerowana automatycznie<br />przez serwis gazetka.sieniu.czest.pl</body></html>', $naglowki);
  44. if($idnowehaslo === TRUE)
  45. {
  46. echo 'Nowe hasło zostało wysłane na podany adres email!';
  47. }
  48. else
  49. {
  50. echo 'Nie udało się zresetować hasła.<br />Prosimy spróbować ponownie za jakiś czas!';
  51. }
  52. }
  53. }
  54. if(isset($_GET['code']))
  55. {
  56. if($_GET['code'])
  57. {
  58. $zap = mysql_query("SELECT * FROM `hasla` WHERE `klucz`= '".$klucz."'");
  59. while($wiersz = mysql_fetch_array($zap))
  60. {
  61. $emailii = $wiersz['email'];
  62. $haslii = strip_tags(htmlspecialchars(stripslashes(trim(mysql_real_escape_string(md5(sha1($wiersz['haslo'])))))));
  63. }
  64. $zapytanie = mysql_query("UPDATE `user` SET `haslo` = '".$haslii."' WHERE `email` = '".$emailii."'") or die(mysql_error());
  65. {
  66. echo '<div align="center"><br /><font color="green"><b>Aktywacja nowego hasła ukończona pomyślnie. Możesz już korzystać z naszego serwisu.<br /><a style="text-decoration: none;" href="index.php">Przejdź do logowania</a></b></font><br /><br /></div>';
  67. }
  68. elseif(mysql_affected_rows()==0)
  69. {
  70. echo '<div align="center"><br /><font color="orange"><b>Podane hasło jest już aktywne.</b></font><br /><br /></div>';
  71. }
  72. else
  73. {
  74. echo '<div align="center"><br /><font color="red"><b>Podano nieistniejący kod aktywacyjny.</b></font><br /><br /></div>';
  75. }
  76. }
  77. }
  78. ?>
Otto
Nowe hasło jest od razu generowane i kodowane w md5 i nigdy nie jest gdzie indziej zapisywane więc skąd użytkownik ma wiedzieć jakie dostał hasło? Niby w mailu dostaje wiadomość z nowym hasłem ale zmienna $hasełko nigdzie nie jest ustawiana. Proponowałbym dać możliwość ustawienia własnego nowego hasła.
adrianozo
Już poprawiłem. Później będzie miał użytkownik możliwość zmiany hasła na swoje w swoim panelu.

  1. <?php
  2. if(isset($_POST['email']))
  3. {
  4. echo '<div align="center"><form action="index.php?page=lostpassword" method="post">
  5. <input type="hidden" name="send" value="1">
  6. <br />Podaj adres email:<input type="text" name="email" value="'.$_POST['email'].'" /><br /><br />
  7. <input class="przycisk_admin" name="reset" type="submit" value="Resetuj hasło">
  8. </form><br /><br /></div>';
  9. }
  10. else
  11. {
  12. echo '<div align="center"><form action="index.php?page=lostpassword" method="post">
  13. <input type="hidden" name="send" value="1">
  14. <br />Podaj adres email:<input type="text" name="email" /><br /><br />
  15. <input class="przycisk_admin" name="reset" type="submit" value="Resetuj hasło">
  16. </form><br /><br /></div>';
  17. }
  18. if(isset($_POST['reset']))
  19. {
  20. $zapytanie = mysql_query("SELECT * FROM `user` WHERE `email` = '".$_POST['email']."'");
  21. if(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  22. {
  23. echo '<font color="red">Podany email jest nieprawidłowy.</font><br />';
  24. }
  25. elseif(!mysql_num_rows($zapytanie))
  26. {
  27. echo 'Nie znaleziono takiego adresu email!';
  28. }
  29. else
  30. {
  31. while($wiersz = mysql_fetch_array($zapytanie))
  32. {
  33. $email = $wiersz['email'];
  34. $loginek = $wiersz['loginek'];
  35. }
  36. $haslo = substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , 10);
  37. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  38. $nowehaslo = "INSERT INTO `hasla` (`email`, `haslo`, `klucz`) VALUES ('".$email."', '".$haslo."', '".$kod."')";
  39. $idnowehaslo = mysql_query($nowehaslo) or die(mysql_error());
  40. $naglowki = 'MIME-Version: 1.0' . "\r\n";
  41. $naglowki .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  42. $naglowki .= 'To: <>' . "\r\n";
  43. $naglowki .= 'From: <gazetka.sieniu.czest.pl>' . "\r\n";
  44. mail($email, 'Przypomnienie hasła na gazetka.sieniu.czest.pl', '<html><body><br />Witaj <b>'.$loginek.'</b>!<br /><br /><br />Na koncie <b>'.$loginek.'</b> zostało zresetowane hasło.<br /><b>Nowe hasło brzmi: '.$haslo.'</b><br /><br />W celu potwierdzenia zmiany hasła kliknij w poniższy odnośnik:<br /><a href="http://gazetka4lo.cba.pl/index.php?page=activepassword&code='.$kod.'">http://gazetka4lo.cba.pl/index.php?page=activepassword&code='.$kod.'</a><br /><br />Jeśli nie resetowałeś hasła na koncie <b>'.$loginek.'</b> po prostu zignoruj tego maila.<br /><br /><br />------<br />Wiadomość wygenerowana automatycznie<br />przez serwis gazetka.sieniu.czest.pl</body></html>', $naglowki);
  45. if($idnowehaslo === TRUE)
  46. {
  47. echo 'Nowe hasło zostało wysłane na podany adres email!
  48. <meta http-equiv="refresh" content="1;url=http://gazetka4lo.cba.pl">';
  49. }
  50. else
  51. {
  52. echo 'Nie udało się zresetować hasła.<br />Prosimy spróbować ponownie za jakiś czas!';
  53. }
  54. }
  55. }
  56. ?>


Aktywacja jest w osobnym pliku

  1. <?php
  2. if(isset($_GET['code']))
  3. {
  4. if($_GET['code'])
  5. {
  6. $zap = mysql_query("SELECT * FROM `hasla` WHERE `klucz`= '".$klucz."'");
  7. while($wiersz = mysql_fetch_array($zap))
  8. {
  9. $emailii = $wiersz['email'];
  10. $haslii = strip_tags(htmlspecialchars(stripslashes(trim(mysql_real_escape_string(md5(sha1($wiersz['haslo'])))))));
  11. }
  12. $zapytanie = mysql_query("UPDATE `user` SET `haslo` = '".$haslii."' WHERE `email` = '".$emailii."'") or die(mysql_error());
  13. {
  14. echo '<div align="center"><br /><font color="green"><b>Aktywacja nowego hasła ukończona pomyślnie. Możesz już korzystać z naszego serwisu.<br /><a style="text-decoration: none;" href="index.php">Przejdź do logowania</a></b></font><br /><br /></div>';
  15. $zapyt = mysql_query("DELETE FROM `hasla` WHERE `email`='".$emailii."'");
  16. }
  17. else
  18. {
  19. echo '<div align="center"><br /><font color="red"><b>Podano nieistniejący kod aktywacyjny.</b></font><br /><br /></div>';
  20. }
  21. }
  22. }
  23. ?>
Otto
  1. $haslo = substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , 10);
  2. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  3. $nowehaslo = "INSERT INTO `hasla` (`email`, `haslo`, `klucz`) VALUES ('".$email."', '".$haslo."', '".$kod."')";
  4. $idnowehaslo = mysql_query($nowehaslo) or die(mysql_error());
  5. $naglowki = 'MIME-Version: 1.0' . "\r\n";
  6. $naglowki .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  7. $naglowki .= 'To: <>' . "\r\n";
  8. $naglowki .= 'From: <gazetka.sieniu.czest.pl>' . "\r\n";
  9. mail($email, 'Przypomnienie hasła na gazetka.sieniu.czest.pl', '<html><body><br />Witaj <b>'.$loginek.'</b>!<br /><br /><br />Na koncie <b>'.$loginek.'</b> zostało zresetowane hasło.<br /><b>Nowe hasło brzmi: '.$haslo.'</b>


Pierw kodujesz hasło w md5 potem zakodowane wysyłasz do użytkownika? Trochę to bez sensu tongue.gif
adasiu
Cytat(Otto @ 13.10.2010, 19:55:02 ) *
  1. $haslo = substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , 10);
  2. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  3. $nowehaslo = "INSERT INTO `hasla` (`email`, `haslo`, `klucz`) VALUES ('".$email."', '".$haslo."', '".$kod."')";
  4. $idnowehaslo = mysql_query($nowehaslo) or die(mysql_error());
  5. $naglowki = 'MIME-Version: 1.0' . "\r\n";
  6. $naglowki .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  7. $naglowki .= 'To: <>' . "\r\n";
  8. $naglowki .= 'From: <gazetka.sieniu.czest.pl>' . "\r\n";
  9. mail($email, 'Przypomnienie hasła na gazetka.sieniu.czest.pl', '<html><body><br />Witaj <b>'.$loginek.'</b>!<br /><br /><br />Na koncie <b>'.$loginek.'</b> zostało zresetowane hasło.<br /><b>Nowe hasło brzmi: '.$haslo.'</b>


Pierw kodujesz hasło w md5 potem zakodowane wysyłasz do użytkownika? Trochę to bez sensu tongue.gif


Na mój gust to tu nigdzie hasło kodowane nie jest tylko tworzone nowe. Faktem jest, że nie jest haszowane...
Otto
A no masz racje tongue.gif Nie uważnie przeczytałem kod biggrin.gif
adrianozo
Hasło haszowane jest po kliknięciu w link z email smile.gif
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.