Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem . Przypomnienie Hasła.
Forum PHP.pl > Forum > PHP
JacobGames26
Witam . Mam mały problem . Chodzi o przypomnienie hasła. Mam owy kod . Wysyla on na e-mail wiadomość z zmianą hasła ale kiedy wchodzę w owy kod nie działa. Wyskakuje błąd "Incorrect or used activation key." Nie wiem zbytnio jak naprawić ten problem.
O to jest kod przypominający hasło. :

  1. <?php
  2. require("config.php");
  3.  
  4. $email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
  5. $domena = $_SERVER['HTTP_HOST'];
  6. $skrypt= $_SERVER['SCRIPT_NAME'];
  7. $parametry = $_SERVER['QUERY_STRING'];
  8. $address = $domena . $skrypt. '?' . $parametry;
  9. $headers = 'From: NADAWCA' . "\r\n" .
  10. 'Reply-To: NADAWCA' . "\r\n" .
  11. 'X-Mailer: PHP/' . phpversion();
  12.  
  13. if(isset($_GET['key'])) {
  14. }
  15. if(isset($key)) {
  16. $checkkey = 'SELECT * FROM users WHERE activation_key="'.$key.'"';
  17. $ck = mysql_fetch_row(mysql_query($checkkey));
  18. if(!$ck[1]) {
  19. Incorrect or used activation key.
  20. ';
  21. }
  22. }
  23. if(isset($key)) {
  24. $checkkey = 'SELECT * FROM users WHERE activation_key="'.$key.'"';
  25. $rekord = mysql_fetch_assoc(mysql_query($checkkey));
  26. $useremail = $rekord['email'];
  27. $new = uniqid();
  28. $newhash = sha1($new);
  29. $query = "UPDATE user SET password='".$newhash."' WHERE activation_key='".$key."';";
  30. mysql_query ($query);
  31. $to = ''.$useremail.'';
  32. $subject = 'New password';
  33. $message = 'Welcome , your current password: '.$new.'';
  34. mail($to, $subject, $message, $headers);
  35. $finish = "UPDATE user SET activation_key='0' WHERE email='".$useremail."';";
  36. mysql_query($finish);
  37. echo 'New password has been sent to specified email.';
  38. }
  39. if(empty($email)) {
  40. echo '<form method="post" action="#">
  41. Your Email: <input type="text" name="email"/>
  42. <input type="submit" value="Send password"/>';
  43. }
  44. if(isset($email) and !filter_var("$email", FILTER_VALIDATE_EMAIL)) {
  45. echo 'This email address is inncorect.';
  46. }
  47. if(isset($email)) {
  48. $checkemail = mysql_query('SELECT * FROM users WHERE email="'.$email.'"');
  49. $checkemail = mysql_fetch_row($checkemail);
  50. if(!$checkemail[1]) {
  51. The email does not exist in database..';
  52. }
  53. elseif($checkemail[1]) {
  54. $new = uniqid();
  55. $query = "UPDATE user SET activation_key='".$new."' WHERE email='".$email."';";
  56. mysql_query ($query);
  57. $to = ''.$email.'';
  58. $subject = 'New password';
  59. $message = 'Hi , if you want to change the password on: http://'.$address.'key='.$new.'';
  60. mail($to, $subject, $message, $headers) or die ("Can't send email");
  61. echo 'Information about the new password has been sent to your e-mail.';
  62. }
  63. }
  64. ?
>
jackraymund
może te funkcje modyfikuja klucz?

sprawdź
  1. echo 'Incorrect or used activation key. '.$key;
JacobGames26
Wyskakuje taki błąd "Incorrect or used activation key. 527667c87fd3b".
com
  1. var_dump($ck[1]);
JacobGames26
Cytat(com @ 3.11.2013, 16:16:55 ) *
  1. var_dump($ck[1]);


I co ja mam z tym zrobić ?
com
no wrzuć i sprawdzić co zwraca bo skoro wykonuje warunek:
  1. if(!$ck[1]) {
  2. Incorrect or used activation key.
  3. ';
  4. }

no to pewnie $ck[1] nie istnieje smile.gif
JacobGames26
Cytat(com @ 3.11.2013, 16:22:33 ) *
no wrzuć i sprawdzić co zwraca bo skoro wykonuje warunek:
  1. if(!$ck[1]) {
  2. Incorrect or used activation key.
  3. ';
  4. }

no to pewnie $ck[1] nie istnieje smile.gif


Tak ale w które dokładnie miejsce mam wrzucić ten kod?
com
przed tym warunkiem smile.gif
JacobGames26
Cytat(com @ 3.11.2013, 16:25:10 ) *
przed tym warunkiem smile.gif


tutaj ?

  1. var_dump($ck[1]);
  2. if(!$ck[1]) {
  3. echo 'Incorrect or used activation key. '.$key;
  4. }
com
tak smile.gif a potem pokaż wynik, może lepiej tak
  1. var_dump($ck);
  2. if(!$ck[1]) {
  3. echo 'Incorrect or used activation key. '.$key;
  4. }
JacobGames26
Cytat(com @ 3.11.2013, 16:32:06 ) *
tak smile.gif a potem pokaż wynik, może lepiej tak
  1. var_dump($ck);
  2. if(!$ck[1]) {
  3. echo 'Incorrect or used activation key. '.$key;
  4. }



Oto wynik "bool(false) Incorrect or used activation key. 52766d1c5a64c"
pedro84
To już wiesz czemu - rekord nie istnieje więc warunek jest spełniony, stąd błąd.
JacobGames26
Cytat(pedro84 @ 3.11.2013, 16:38:21 ) *
To już wiesz czemu - rekord nie istnieje więc warunek jest spełniony, stąd błąd.


Dobrze. A jak owe warunek naprawić?
pedro84
Spróbuj tak:
  1. if(isset($key)) {
  2. $checkkey = 'SELECT id FROM users WHERE activation_key="'.$key.'"';
  3. $ck = mysql_fetch_row(mysql_query($checkkey));
  4. if(!$ck[0]) {
  5. Incorrect or used activation key.
  6. ';
  7. }


Sprawdź też zmienną $key:
  1. var_dump($key);
JacobGames26
Cytat(pedro84 @ 3.11.2013, 16:44:33 ) *
Spróbuj tak:
  1. if(isset($key)) {
  2. $checkkey = 'SELECT id FROM users WHERE activation_key="'.$key.'"';
  3. $ck = mysql_fetch_row(mysql_query($checkkey));
  4. if(!$ck[0]) {
  5. Incorrect or used activation key.
  6. ';
  7. }


Sprawdź też zmienną $key:
  1. var_dump($key);


Owy błąd nadal występuje.

Gdzie wkleić var_dump($key);?
pedro84
Przed zapytanie. Ja naprawdę poleciłbym Ci poczytać manual, bo nie znasz absolutnie żadnych podstaw.
JacobGames26
Cytat(pedro84 @ 3.11.2013, 16:51:08 ) *
Przed zapytanie. Ja naprawdę poleciłbym Ci poczytać manual, bo nie znasz absolutnie żadnych podstaw.


No muszę przyznać ze nie znam . Owy manual gdzie można znaleść?
com
http://php.net wink.gif
JacobGames26
Cytat(com @ 3.11.2013, 17:42:56 ) *


Jest może jakaś polska strona ? biggrin.gif
com
http://www.php.net/manual/pl/

ale bez jaj jak chcesz programować to musisz znać ang smile.gif
JacobGames26
Cytat(com @ 3.11.2013, 18:06:04 ) *
http://www.php.net/manual/pl/

ale bez jaj jak chcesz programować to musisz znać ang smile.gif


Znam . Ale czytanie ang to nie zabardzo mi wychodzi więc wiesz. haha.gif
pyro
Cytat(JacobGames26 @ 3.11.2013, 18:10:39 ) *
Znam . Ale czytanie ang to nie zabardzo mi wychodzi więc wiesz. haha.gif


Niebieskie zaprzecza czerwonemu.
pedro84
Cytat(JacobGames26 @ 3.11.2013, 18:28:34 ) *
No muszę przyznać ze nie znam . Owy manual gdzie można znaleść?

Proszę Cię. Trochę do jasnej cholery pomyślunku...
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.