Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL] Błąd odczytu hasła
Forum PHP.pl > Forum > Przedszkole
nemesis_dex
Po dodaniu nowego uzytkownika hasło zapisywane jest w md5 a przy logowaniu w ten sam sposob jest odczytywane ale pokazuje że nieprawidlowe haslo

Oto kod:

  1. <?php
  2. require_once "dane.php";
  3.  
  4. $query = mysql_query("SELECT * FROM uzytkownicy WHERE `user` = '" . $_POST['login'] . "' ");
  5. $fetch = mysql_fetch_array($query);
  6. if ( $fetch )
  7. {
  8. if ( md5( $_POST['password'] ) == $fetch['pass'] )
  9. {
  10. $_SESSION['zalogowany'] = '1';
  11. $_SESSION['login'] = $_POST['login'];
  12. echo &#092;"<script>setTimeout('document.location = \"sklep.php\"', 2000);\";
  13. echo 'logowanie zakonczone sukcesem
  14. ';
  15. echo 'Zalogowany';
  16. echo '<a href=\"sklep.php\">Klik';
  17. }
  18. else
  19. {
  20. echo 'Przykro mi, ale podane haslo jest bledne';
  21. }
  22. }
  23. else
  24. {
  25. echo 'Podany uzytkownik nie istnieje w bazie danych';
  26. }
  27. ?>


Czy ktoś widzi tu jakiś błąd. Przeinstalowywałem ostatnio serwer i od tamtej pory wszystko się pokręciło chociaż kod jest ciąge ten sam. Wcześniej wszystko działało normalnie.
nevt
Dlaczego:
  1. $query = mysql_query("SELECT * FROM uzytkownicy WHERE `user` = '" . $_POST['login'] . "' ");

a nie:
  1. $query = mysql_query("SELECT * FROM uzytkownicy WHERE `user` = '$_POST['login']'");

I na diabła ci to \ na początku każdego łańcucha??
nemesis_dex
masz racje tylko sam nie wiem jak to sie tutaj znalazlo bo w kodzie strony tego nie ma a tutaj jest :/ musze to zaraz poprawic

Dodam jeszcze jeden kod:

rejstracja.php
  1. <?php
  2. require_once "dane.php";
  3.  
  4. $query = mysql_query("SELECT * FROM uzytkownicy WHERE `user` = '" . $_POST['user'] . "' ");
  5. $fetch = mysql_fetch_array($query);
  6. if ( ! $fetch )
  7. {
  8. $result= mysql_query("insert into uzytkownicy values ('$user', md5('$pass'))");
  9. echo 'Teraz możesz przejść do logowania ! <br><a href="logowanie.html">Klik</a>';
  10. }
  11. else
  12. {
  13. echo 'Przykto mi urzytkownik już istnieje !<br><a href="rejestracja.html">Rejestracja</a>';
  14. }
  15. ?>


Zauważyłem, że podczas rejestrowania nowego użytkownika do bazy danych nie jest dodawana nazwa użytkownika tylko samo hasło choć wydaje mi się że też raczej tego hasła nie pobiera tylko wpisuje je sam. Np. dla hasła "aa" kodowanie wyglada tak: "4124bc0a9335c27f086f24ba207a4912" a on wpisuje tak: "d41d8cd98f00b204e9800998ecf8427e" czyli jest coś nie tak ale nie wiem w czym jest błąd.
nevt
No to po kolei:

1. Nie widzę inicjalizacji $user i $pass - ale w domyśle zakładam, że je ustawiasz... chociaż piszesz, że user ci się nie dodaje, więc może jednak zapomniałeś zmienną ustawić...

2. wyrażenie "md5('$pass')" jest tożsame z md5('$pass') - czyli koduje łańcuch '$pass' a nie zmienną $pass - wynik zawsze będzie taki sam...

3. zmień na "'md5($pass)'" co odpowiada 'md5($pass)' - czyli wynik działania funkcji md5() na zmiennej $pass ujęty w apostrofy... tylko nie zapomnij przypisać do $pass jakiejś wartości.

Widzę, że jeszcze ci się miesza stosowanie ' i " w PHP, ale poćwiczysz trochę i nabierzesz wprawy smile.gif

czyli właściwe zapytanie to:
  1. "INSERT INTO uzytkownicy VALUES('$user', 'md5($pass)');"


Powodzenia.
nemesis_dex
Zrobiłem tak jak napisałeś, ale teraz w bazie danych w tabeli pass widnieje tylko "md5()" więc zostawiłem tak jak było natomiast po dodaniu dwóch linijek:

  1. <?php
  2. $user = $_POST['user'];
  3. $pass = $_POST['pass'];
  4. ?>


wszystko zaczęło działać normalnie smile.gif Dzięki za pomoc. Odbierz PW

BTW. Dziwi mnie tylko jedno, że wcześniej wszystko działało bez zarzutów dopiero po przeinstalowaniu pokazał się ten problem ale najwarzniejsze ze juz działa smile.gif
nevt
Poczytaj o register_globals w php.ini

W ostatnich wersjach PHP jest domyślnie wyłączone, a we wcześniejszych było domyślnie włączone.
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.