Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][PDO] Błędne porównanie ciągów
Forum PHP.pl > Forum > PHP
sloenthran
Otóż pomimo że ciąg z $OldPass jest taki sam jak z bazy danych to skrypt nadal wyrzuca mi że jest inaczej...

  1. <?php
  2.  
  3. if($_POST['CHANGE'])
  4. {
  5.  
  6. $OldPass = sha1(md5($Core->ClearText($_POST['OLDPASS'])));
  7. $NewPass = sha1(md5($Core->ClearText($_POST['NEWPASS'])));
  8.  
  9. if(!$OldPass || !$NewPass)
  10. {
  11.  
  12. if($Lang == 'pl')
  13. {
  14.  
  15. $View->Load("pl_info");
  16. $View->Add("title", "Błąd :: Puste pola");
  17. $View->Add("header", "Błąd! Puste pola!");
  18. $View->Add("info", "Pola formularza nie mogą być puste!");
  19. $View->Add("back", "change_pass.html");
  20. $View->Out();
  21.  
  22. }
  23.  
  24. else
  25. {
  26.  
  27. $View->Load("en_info");
  28. $View->Add("title", "Error :: Empty fields");
  29. $View->Add("header", "Error! Empty fields!");
  30. $View->Add("info", "Form fields can not be empty!");
  31. $View->Add("back", "change_pass.html");
  32. $View->Out();
  33.  
  34. }
  35.  
  36. }
  37.  
  38. else
  39. {
  40.  
  41. $Query = $MySQL->prepare("SELECT `pass` FROM `users` WHERE `id`=:one");
  42.  
  43. $Query->bindValue(":one", $_SESSION['id'], PDO::PARAM_INT);
  44.  
  45. $Query->execute();
  46.  
  47. $Fetch = $Query->fetch();
  48.  
  49. if($Fetch['pass'] != $OldPass)
  50. {
  51.  
  52. if($Lang == 'pl')
  53. {
  54.  
  55. $View->Load("pl_info");
  56. $View->Add("title", "Błąd :: Błędne hasło");
  57. $View->Add("header", "Błędne hasło!");
  58. $View->Add("info", "Stare hasło nie zgadza się z tym zapisanym w bazie danych!");
  59. $View->Add("back", "change_pass.html");
  60. $View->Out();
  61.  
  62. }
  63.  
  64. else
  65. {
  66.  
  67. $View->Load("en_info");
  68. $View->Add("title", "Error :: Bad pass");
  69. $View->Add("header", "Bad pass!");
  70. $View->Add("info", "Old password does not match the data stored in the database!");
  71. $View->Add("back", "change_pass.html");
  72. $View->Out();
  73.  
  74. }
  75.  
  76. }
  77.  
  78. else
  79. {
  80.  
  81. $Query = $MySQL->prepare("UPDATE `users` SET `pass`=:one WHERE `id`=:two");
  82.  
  83. $Query->bindValue(":one", $NewPass, PDO::PARAM_STR);
  84. $Query->bindValue(":two", $_SESSION['id'], PDO::PARAM_INT);
  85.  
  86. $Query->execute();
  87.  
  88. $Core->AddLogs('Zmieniono hasło', 'Pass Changed', 0);
  89.  
  90. if($Lang == 'pl')
  91. {
  92.  
  93. $View->Load("pl_info");
  94. $View->Add("title", "Hasło zmienione");
  95. $View->Add("header", "Hasło zmienione!");
  96. $View->Add("info", "Hasło zostało pomyślnie zmienione!");
  97. $View->Add("back", "change_pass.html");
  98. $View->Out();
  99.  
  100. }
  101.  
  102. else
  103. {
  104.  
  105. $View->Load("en_info");
  106. $View->Add("title", "Pass change");
  107. $View->Add("header", "Pass change!");
  108. $View->Add("info", "The pass was changed!");
  109. $View->Add("back", "change_pass.html");
  110. $View->Out();
  111.  
  112. }
  113.  
  114. }
  115.  
  116. }
  117.  
  118. }
  119.  
  120. else
  121. {
  122.  
  123. if($Lang == 'pl')
  124. {
  125.  
  126. $Info = '<form method="post" action="change_pass.html">
  127.  
  128. <input type="hidden" name="CHANGE" value="true">
  129.  
  130. <br>Stare hasło<br><br><input type="password" name="OLDPASS"><br>
  131. <br>Nowe hasło<br><br><input type="password" name="NEWPASS"><br>
  132.  
  133. <br><button type="submit" class="przycisk">Zmień <i class="fa fa-chevron-circle-right"></i> </button>
  134.  
  135. </form>';
  136.  
  137. $View->Load("pl_logged_home");
  138. $View->Add('title', 'Zmiana hasła');
  139. $View->Add('header', 'Zmiana hasła');
  140. $View->Add('info', $Info);
  141. $View->Out();
  142.  
  143. }
  144.  
  145. else
  146. {
  147.  
  148. $Info = '<form method="post" action="change_pass.html">
  149.  
  150. <input type="hidden" name="CHANGE" value="true">
  151.  
  152. <br>Old pass<br><br><input type="password" name="OLDPASS"><br>
  153. <br>New pass<br><br><input type="password" name="NEWPASS"><br>
  154.  
  155. <br><button type="submit" class="przycisk">Change <i class="fa fa-chevron-circle-right"></i> </button>
  156.  
  157. </form>';
  158.  
  159. $View->Load("en_logged_home");
  160. $View->Add('title', 'Change Pass');
  161. $View->Add('header', 'Change Pass');
  162. $View->Add('info', $Info);
  163. $View->Out();
  164.  
  165. }
  166.  
  167. }
  168.  
  169. ?>
rad11
Ale nie wpisujesz jako password tego co zapisuje sie w bazie...? Bo napisales ze ciag hasla jest taki sam jak w bazie. Z vardump`uj sobie wszystko po kolei musi to byc jakas blachostka.
ZaqU
Sprawdź najpierw
  1. var_dump( $Fetch['pass'] );
  2. var_dump( $OldPass );

a potem resztę zmiennych. Już w pierwszych linijkach masz coś co kompletnie nie ma sensu. Pierwszy lepszy przykład z brzegu:
  1. $OldPass = sha1(md5($Core->ClearText($_POST['OLDPASS'])));
  2. $NewPass = sha1(md5($Core->ClearText($_POST['NEWPASS'])));
  3.  
  4. if(!$OldPass || !$NewPass) { ... }

Nawet jeśli $_POST['OLDPASS'] będzie puste (null), to i tak podanie w pierwszym parametrze metodzie md5() argumentu null spowoduje wygenerowanie hasha. Czyli warunek if(!$OldPass || !$NewPass) nigdy nie zostanie spełniony, bo w $OldPass i $NewPass zawsze będzie jakaś wartość która jest != null.
com
pierwsze pytanie jakie powinieneś sobie zadać to czy aby na pewno jest taki sam, porównaj hasha z posta z tym co siedzi w bazie, po drugie ztrimuj posta aby usunąć białe znaki i tak jak już koledzy powiedzili
sloenthran
Już sobie poradziłem -> Zamiast w $_SESSION podać 'ID' podałem 'id' smile.gif

Dziękuję wszystkim za chęci pomocy
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.