Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [md5] Odzyskiwanie hasła
Forum PHP.pl > Forum > PHP
shpaque
Witam - mam niemały problem. Osobiście praktycznie leżę z PHP, strony buduję w WYSIWYG'ach, dodając skrypty lub elementy html/php/java; ale zrobiłem coś takiego (poniżej) i nie wiem, gdzie i dlaczego skrypt nie wykonuje się do końca. Problem jest taki, że owszem hasło zostaje zmienione na przypadkowe, mail idzie do osoby, która prosi o przypomnienie hasła, ale z kolei nowe hasło nie zostaje nadpisane w pliku... Dlaczego?
  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] == 'POST' && strlen($_POST['email'] <= 50))
  3. {
  4. $email = addslashes($_POST['email']);
  5. $found = false;
  6. $logtimes = array();
  7. $ipadresss = array();
  8. $usernames = array();
  9. $passwords = array();
  10. $emailaddresses = array();
  11. $fullnames = array();
  12. $punktys = array();
  13. $activeaccounts = array();
  14. $count = 0;
  15. $success_page = './login.php';
  16. $error_page = './mailerror.php';
  17. $database = './db/usersdb.csv';
  18.  
  19. if (filesize($database) == 0)
  20. {
  21. header('Location: '.$error_page);
  22. }
  23. else
  24. {
  25. $items = file($database);
  26. foreach($items as $line)
  27. {
  28. list($logtime, $ipadress, $username, $password, $emailaddress, $fullname, $punkty, $active) = explode(',', trim($line));
  29. $logtimes[$count] = $logtime;
  30. $ipadresss[$count] = $ipadress;
  31. $usernames[$count] = $username;
  32. $passwords[$count] = $password;
  33. $emailaddresses[$count] = $emailaddress;
  34. $fullnames[$count] = $fullname;
  35. $punktys[$count] = $punkty;
  36. $activeaccounts[$count] = $active;
  37. if ($email == $emailaddress)
  38. {
  39. $found = true;
  40. }
  41. $count++;
  42. }
  43. }
  44. if ($found == true)
  45. {
  46. $alphanum = array('a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s','t','u','v','x','y','z','A','B','C','D','E','F','G','H','I','J','K','M','N','P','Q','R','S','T','U','V','W','X','Y','Z','2','3','4','5','6','7','8','9');
  47. $chars = sizeof($alphanum);
  48. $a = time();
  49. mt_srand($a);
  50. for ($i=0; $i < 6; $i++)
  51. {
  52. $randnum = intval(mt_rand(0,56));
  53. $newpassword .= $alphanum[$randnum];
  54. }
  55. $crypt_pass = md5($newpassword);
  56. $file = fopen($database, 'w');
  57. for ($i=0; $i < $count; $i++)
  58. {
  59. fwrite($file, $logtimes[$i]);
  60. fwrite($file, ',');
  61. fwrite($file, $ipadresss[$i]);
  62. fwrite($file, ',');
  63. fwrite($file, $usernames[$i]);
  64. fwrite($file, ',');
  65. if ($emailaddresses[$i] == $email)
  66. {
  67. fwrite($file, $crypt_pass);
  68. }
  69. else
  70. {
  71. fwrite($file, $passwords[$i]);
  72. }
  73. fwrite($file, ',');
  74. fwrite($file, $emailaddresses[$i]);
  75. fwrite($file, ',');
  76. fwrite($file, $fullnames[$i]);
  77. fwrite($file, ',');
  78. fwrite($file, $punktys[$i]);
  79. fwrite($file, ',');
  80. fwrite($file, $activeaccounts[$i]);
  81. fwrite($file, "\r\n");
  82. }
  83. fclose($file);
  84. $mailto = $_POST['email'];
  85. $subject = 'Przypomnienie hasla';
  86. $message = 'Witaj, Twoje haslo do logowania w serwisie, to: ';
  87. $message .= "\r\n";
  88. $message .= "\r\n";
  89. $message .= $newpassword;
  90. $message .= "\r\n";
  91. $header = "From: ..."."\r\n";
  92. $header .= "Reply-To: ..."."\r\n";
  93. $header .= "MIME-Version: 1.0"."\r\n";
  94. $header .= "Content-Type: text/plain; charset=Windows-1250"."\r\n";
  95. $header .= "Content-Transfer-Encoding: 8bit"."\r\n";
  96. $header .= "X-Mailer: PHP v".phpversion();
  97. mail($mailto, $subject, $message, $header);
  98. header('Location: '.$success_page);
  99. }
  100. else
  101. {
  102. header('Location: '.$error_page);
  103. }
  104. }
  105. ?>


proszę o odpowiedź i wskazanie / pomoc przy rozwiązaniu babola.

pozdrawiam wszystkich
Shpaque

...Nikt nie potrafi mi pomóc..?
CuteOne
zamiast napieprzać n+1 fwrite zapisz dane do zmiennej i dopiero na szarym końcu wrzuć do pliku

  1. for ($i=0; $i < $count; $i++)
  2. {
  3. $write .= $logtimes[$i].','.$ipadresss[$i]).','.$usernames[$i];
  4. if ($emailaddresses[$i] == $email)
  5. {
  6. $write .= $crypt_pass;
  7. }
  8. else
  9. {
  10. $write .= $passwords[$i];
  11. }
  12. //itd..
  13.  
  14. fwrite($file, $write);
  15. }
  16. fclose($file);
shpaque
dzięki sprawdzę wieczorem...

...niestety nie udało się - teraz w ogóle poprzestawiał zmiennie przy zapisywaniu pliku - nie wiem dlaczego... Kurcze czy ktoś znajdzie ubytek? błąd?
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.