ugrás a tartalomhoz

MD5 nem megy...

Anonymous · 2005. Már. 9. (Sze), 07.53
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:
  1. function jelszoEllenorzes( $nev$jelszo ) {  
  2.     global $kapcsolat;  
  3.     $md5jelszo = md5($jelszo);  
  4.     $eredmeny = mysql_query( "SELECT * FROM users WHERE BINARY nev='$nev' AND BINARY jelszo='$md5jelszo'"$kapcsolat );  
  5.     if ( ! $eredmeny )  
  6.         die ( "Adatbázis hiba: " . mysql_error() );  
  7.     if ( mysql_num_rows( $eredmeny ) )  
  8.         return mysql_fetch_array( $eredmeny );  
  9.     return false;  
  10. }  
 
1

írasd ki a változókat

VBala · 2005. Már. 9. (Sze), 10.16
Szinte biztos, hogy nem kapja meg a scripted amit beírsz, különben nem generálná ugyanazt a hash-t.
2

Az md5 ezt is lekódolja :

ppshungary · 2005. Már. 9. (Sze), 11.06
Az md5 ezt is lekódolja : $jelszo="";

méghozzá így: d41d8cd98f00b204e9800998ecf8427e
Ha ismerős, akkor nullstringet kap a függvény!!!!

PPS
4

Valóban nem kapta meg a

Anonymous · 2005. Már. 9. (Sze), 17.00
Valóban nem kapta meg a stringet. Figyelmetlen voltam. Régebben a PHP 5-ös verzióját használtam, most a 4.3.4-et használom. A PHP5 simán megette a formból POST-olt adatok, nem kellett a $_POST tömböt használnom. Rájöttem, hogy a PHP4-nél kell...
Mostmár megy rendben, köszönöm a segítséget!
6

Álljunk megy egy szóra!

Poetro · 2005. Már. 9. (Sze), 17.49
Ez nem verziófüggő!
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
3

Változó elkülönítés

monghuz · 2005. Már. 9. (Sze), 16.24
Hali!
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
5

A lekérdezés

Anonymous · 2005. Már. 9. (Sze), 17.02
A lekérdezés szintaktikájával nem volt semmi probléma! Igazából a colorer tag egy kicsit átalakította. A BINARY-t azért használom, hogy case sensitive legyen a lekérdezés.