MD5 nem megy...
Hello mindenki!
MD5-ös titkosítást szeretnék használni. Van egy felhasználónév-jelszó páros egy MySQL adatbázisban. A jelszót a PHP MD5-ös algoritmusával titkosítottam, és az így kapott hash-t eltároltam az adatbázisban. A felhasználók azonosításánál a szkript a beírt jelszóból MD5-ös hash-t kreál, majd ezt összehosonlítja az adatbázisban találhatóval.
Ennek szerintem így a gyakorlatban is működnie kéne. Kéne... Ugyanis nem működik. A beléptetőoldal egész más hash-t generál ugyanarra a jelszóra, mint amit én előzőleg generáltam. Ami még probléma, hogy mindig ugyanazt a hash-t generálja, bármit írok be.
Hol ronthattam el?
Itt van az azonosítást végző forráskód-részlet:
■ MD5-ös titkosítást szeretnék használni. Van egy felhasználónév-jelszó páros egy MySQL adatbázisban. A jelszót a PHP MD5-ös algoritmusával titkosítottam, és az így kapott hash-t eltároltam az adatbázisban. A felhasználók azonosításánál a szkript a beírt jelszóból MD5-ös hash-t kreál, majd ezt összehosonlítja az adatbázisban találhatóval.
Ennek szerintem így a gyakorlatban is működnie kéne. Kéne... Ugyanis nem működik. A beléptetőoldal egész más hash-t generál ugyanarra a jelszóra, mint amit én előzőleg generáltam. Ami még probléma, hogy mindig ugyanazt a hash-t generálja, bármit írok be.
Hol ronthattam el?
Itt van az azonosítást végző forráskód-részlet:
function jelszoEllenorzes( $nev, $jelszo ) {
global $kapcsolat;
$md5jelszo = md5($jelszo);
$eredmeny = mysql_query( "SELECT * FROM users WHERE BINARY nev='$nev' AND BINARY jelszo='$md5jelszo'", $kapcsolat );
if ( ! $eredmeny )
die ( "Adatbázis hiba: " . mysql_error() );
if ( mysql_num_rows( $eredmeny ) )
return mysql_fetch_array( $eredmeny );
return false;
}
írasd ki a változókat
Az md5 ezt is lekódolja :
méghozzá így: d41d8cd98f00b204e9800998ecf8427e
Ha ismerős, akkor nullstringet kap a függvény!!!!
PPS
Valóban nem kapta meg a
Mostmár megy rendben, köszönöm a segítséget!
Álljunk megy egy szóra!
Vszínű a PHP5-ödben (teljesen helytelenül) be volt állítva a register_globals értéke igazra, és akkor ugye szolgáltatja is a változókat.
Mindenképpen érdemes ennek értékét hamisra tenni, és így dolgozni a későbbi problémá, esetleg egész projektek átírásának elkerülése végett.
Úgyhogy a PHP4 jól csinálja amit csinál, és a PHP5-ödet is így kellett volna beállítani.
--------
Poetro
Változó elkülönítés
Szerintem probáld ki igy:
$eredmeny = mysql_query( "SELECT * FROM users WHERE nev = '".$nev."' AND jelszo = '".$md5jelszo."' ", $kapcsolat );
a mysql lekérdezésbe ha változót írsz be akkor azt igy : '".$változó."' én erre tippelnék, mert küzdöttem ezzel elég sokat még az elején...
amúgy szerintem a BINARY -sem kell oda, ha csak nincsen változás a karakter kódolásban...
hali: Tomi
A lekérdezés