Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Skrypt przypomnienia hasła
adrianozo
post 12.10.2010, 20:26:48
Post #1





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


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. ?>


Ten post edytował adrianozo 12.10.2010, 20:28:22


--------------------
Go to the top of the page
+Quote Post
Otto
post 12.10.2010, 21:27:58
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 7
Dołączył: 22.03.2010

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


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.
Go to the top of the page
+Quote Post
adrianozo
post 13.10.2010, 15:47:37
Post #3





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


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. ?>


--------------------
Go to the top of the page
+Quote Post
Otto
post 13.10.2010, 18:55:02
Post #4





Grupa: Zarejestrowani
Postów: 144
Pomógł: 7
Dołączył: 22.03.2010

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


  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
Go to the top of the page
+Quote Post
adasiu
post 13.10.2010, 19:00:41
Post #5





Grupa: Zarejestrowani
Postów: 65
Pomógł: 7
Dołączył: 18.01.2007
Skąd: Tychy

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


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...
Go to the top of the page
+Quote Post
Otto
post 13.10.2010, 20:31:41
Post #6





Grupa: Zarejestrowani
Postów: 144
Pomógł: 7
Dołączył: 22.03.2010

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


A no masz racje tongue.gif Nie uważnie przeczytałem kod biggrin.gif

Ten post edytował Otto 13.10.2010, 20:32:35
Go to the top of the page
+Quote Post
adrianozo
post 13.10.2010, 21:05:58
Post #7





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Hasło haszowane jest po kliknięciu w link z email smile.gif


--------------------
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: 13.07.2025 - 08:49