Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Dziwny problem z md5 przy logowaniu
-Hetrtt-
post 21.07.2008, 20:12:21
Post #1





Goście







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>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kaem
post 21.07.2008, 20:35:49
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

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


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.

Ten post edytował kaem 21.07.2008, 20:47:04
Go to the top of the page
+Quote Post
grzemach
post 21.07.2008, 20:41:07
Post #3





Grupa: Zarejestrowani
Postów: 121
Pomógł: 4
Dołączył: 9.06.2007
Skąd: Kielce

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


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.

Ten post edytował grzemach 21.07.2008, 20:43:04


--------------------
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: 19.07.2025 - 10:08