Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Dziwny problem z md5 przy logowaniu
Forum PHP.pl > Forum > Przedszkole
Hetrtt
Mam dziwny problem z md5 przy logowaniu. W ogóle mnie nie chce logować. Wcześniej przy strukturalnie pisanym panelu miałem to samo ale udało mi się to rozwiązać ale nie przypomnę sobie jak. Dziwne jest to że jak w ogóle usunę md5 z $_POST['pass'] i żeby nie było też kodowane w bazie tylko normalnie to mnie loguje bez problemu. O co tu chodzi ?

  1. <?php
  2.  
  3.  
  4. class user {
  5.  
  6. public $user;
  7. private $pass;
  8.  
  9. public function checkuser() {
  10.  
  11. $pdo = new pdo ('mysql:host=localhost;dbname=trial','root','mentormiszcz1e');
  12. $row= $pdo-> query ("SELECT user,password FROM heh");
  13.  
  14. while ($line= $row-> fetch()) {
  15.  
  16. $this-> user= $line['user'];
  17. $this-> pass= $line['password'];
  18.  
  19. if ($this->user== $_POST['user'] && $this-> pass== md5($_POST['pass'])) {
  20. $_SESSION['user']= TRUE;
  21. header ("Location: protect.php");
  22. }
  23. else {
  24. header ("Location: log.html");
  25. }
  26.  
  27. } // end while
  28.  
  29. $row-> closeCursor();
  30.  
  31. } // end function
  32.  
  33. }
  34.  
  35. $user= new user;
  36. $user-> checkuser();
  37.  
  38. ?>


  1. <?php
  2.  
  3.  
  4. if (isset($_SESSION['user'])) {
  5. echo 'Yo nigga biggrin.gif';
  6. }
  7.  
  8. else {
  9. header ("Location: log.html");
  10. }
  11.  
  12. ?>


  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">
  5. <title>Title</title>
  6. </head>
  7.  
  8. <form action="class.php" method="post">
  9. <div id="form">
  10. <input type="text" name="user" />
  11. <input type="password" name="pass" />
  12. <input type="submit" value="Sign in" />
  13. </div>
  14. </form>
  15.  
  16. </body>
  17. </html>
kaem
A masz w bazie ustawioną odpowiednią długość na przechowywanie zaszyfrowanego hasła? Bo już dzisiaj był taki przypadek na forum, że koleś ustawił za krótkie pole na hasło i mu logowanie nie działało.
Edit:
bo po zastosowaniu funkcji szyfrującej hasło jest o wiele dłuższe.
grzemach
jak na mój gust to jest wszystko w porządku, jak poprawię
  1. <?php
  2.  
  3.  
  4. class user {
  5.  
  6. public $user;
  7. private $pass;
  8.  
  9. public function checkuser() {
  10.  
  11. // $pdo = new pdo ('mysql:host=localhost;dbname=trial','root','mentormiszcz1e');
  12. // $row= $pdo-> query ("SELECT user,password FROM heh");
  13. //
  14. // while ($line= $row-> fetch()) {
  15.  
  16. $this-> user= $line['user'];
  17. $this-> pass= $line['password'];
  18.  
  19. $this-> user= 'login';
  20. $this-> pass= md5('haslo');
  21.  
  22. if ($this->user== $_POST['user'] && $this-> pass== md5($_POST['pass'])) {
  23. $_SESSION['user']= TRUE;
  24. header ("Location: protect.php");
  25. }
  26. else {
  27.  header ("Location: log.html");
  28. }
  29.  
  30. // } // end while
  31.  
  32. // $row-> closeCursor();
  33.  
  34. } // end function
  35.  
  36. }
  37.  
  38. $user= new user;
  39. $user-> checkuser();
  40.  
  41. ?>


Działa dla tych danych, więc wnioskuję że masz coś źle zrobione z bazą danych, pokaż 1 rekord i podaj jakie powinno być hasło. Może źle Ci coś zaszyfrowało je?

Ewentualnie może nie są w ogóle w bazie szyfrowane, więc możesz spróbować usunąć md5($_POST['pass']) a zostawić samo $_POST['pass'].
Dla danych wpisanych w program działa...


Spróbuj jeszcze zrobić taki skrypcik:
  1. <?php
  2. $pdo = new pdo ('mysql:host=localhost;dbname=trial','root','mentormiszcz1e');
  3. $row= $pdo-> query ("SELECT user,password FROM heh");
  4.  
  5. while ($line= $row-> fetch()) {
  6.  
  7.  echo $line['user'].' '.$line['password'].'<br />';
  8.  
  9. } // end while
  10.  
  11. $row-> closeCursor();
  12. ?>


i zobaczysz co się pojawia w odpowiedzi na takie zapytanie.
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.