Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kodowanie haseł w MySQL, Problem z porównywaniem zakodowanych wartości
Wujek01
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 1.06.2006

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


Witam
Mam problem z weryfikacją. Hasło oraz login przechowywane są w tabeli. Oczywiście login jest zwykłym textem typu varchar natomiast hasło też jest typu varchar jednak zakodowane funkcją PASSWORD().
Sprawdzanie odbywa się przez:
  1. <?php
  2. $zapytanie = "select count(*) FROM tabela WHERE nazwa='$name' and haslo=PASSWORD('$haslo')";
  3. ?>

Po localhoscie wszystko działa idealnie jednak problem zaczyna sie po wczytaniu bazy na serwer. Niemogę się zalogować na strone gdyż hasło się nie zgadza. Ręczna zmiana haseł bezpośrednio na serwerze przez phpMyAdmina nie pomaga (bez szyfrowania hasła oczywiście wszystko działa). Baze mam na yoyo.pl (ver bodaj MySQL 5.0.20). Co może być nie tak (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Jak inaczej jeszcze można szyfrować hasła w tabeli. Próbowałem funkcją md5() ale sytuacja jest identyczna.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Wujek01
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 1.06.2006

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


Wielkie dzięki za pomoc nospor. Poradziełm sobie tak:
  1. <?php
  2. $haslo = $_POST['password'];
  3. $haslo1 = md5($haslo);
  4. $zapytanie = "select count(*) FROM tabela WHERE nazwa='$name' and haslo='$haslo1'";
  5. ?>

Niewiem dlaczego ale wpisanie bezpośrednio w zapytanie kodowania md5:
  1. <?php
  2. $zapytanie = "select count(*) FROM tabela WHERE nazwa='$name' and haslo=md5('$haslo')";
  3. ?>

wyrzucało błedy że niemożna przesłać zapytania. Ale to już nieistotne, porównywanie działa poprawnie.
Go to the top of the page
+Quote Post
bendi
post
Post #3





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


Cytat(Wujek01 @ 7.06.2006, 14:35 ) *
porównywanie działa poprawnie.

Nie widzę struktury bazy ale jak jesteś pewien że działa tak poprawnie to spróbuj:
Kod
INSERT INTO tabela (nazwa, haslo) values( 'dupa', md5('dupa'));

A później
Kod
SELECT count(*) FROM tabela WHERE nazwa = 'dupa' and lower( md5( 'dupa' ) );
-- oraz
SELECT count(*) FROM tabela WHERE nazwa = 'dupa' and upper( md5( 'dupa' ) );
-- i
SELECT count(*) FROM tabela WHERE nazwa = 'dupa' and md5( 'dupa' );


Jeżeli w pierwszych dwóch przypadkach dostaniesz 0 to wszystko gra, ale jak dostaniesz 1 to znaczy że coś nie gra, otóż przypuszczalnie masz wtedy zadeklarowaną kolumnę w bazie jako CHAR/VARCHAR, w takim przypadku żeby wymusić case sensitivity trzeba dodać jeszcze do deklaracji kolumny BINARY i będzie wsio ok.

Ten post edytował bendi 7.06.2006, 15:11:37
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 23:36