Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP/MySQL] Błąd odczytu hasła
nemesis_dex
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.08.2007

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


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.

Ten post edytował nemesis_dex 3.10.2007, 17:40:34
Go to the top of the page
+Quote Post
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


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??


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
nemesis_dex
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.08.2007

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


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.
Go to the top of the page
+Quote Post
nevt
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


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.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
nemesis_dex
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.08.2007

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


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

Ten post edytował nemesis_dex 3.10.2007, 19:57:40
Go to the top of the page
+Quote Post
nevt
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


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.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
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 Aktualny czas: 21.08.2025 - 17:33