Nerovnost MD5 (php,sql)
4 příspěvky
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Zdravím, setkali jste se někdo s problémem, že by MD5 hash v php a sql byl odlišný? SQL heslo získávám takto (v phpmyadmin): SELECT md5( 'čip777' ) výsledek: md5( 'čip777' ) 5aff521558dc12cc9e880773e6754c0d PHP heslo samozřejmě md5($zadane_heslo) Porovnávací script: echo $zadane_heslo.","; echo md5($zadane_heslo).","; echo $dbheslo; Výsledek: čip777,37c0c9b708a4b14f88d4e9f00c7e64c8,5aff521558dc12cc9e880773e6754c0d Přišlo mi to jako docela velká zajímavost, protože tento princip používám v několikatisícové databázi a nikdy jsem s tím tento problém neměl (nebo aspoň o něm nevím). Napadá mě, že chyba bude na straně SQL, kde bude chyba někde v kódování (porovnávání). V podstatě, že k samotné DB dojde dotaz už v jiné formě. Nebo napadá někoho něco? Je v principech MD5 něco, co mi uniká? Díky za nápady.
-
První věc co mě napadla, je diakritika. Data v databázi i PHP musí být ve stejném kódování. Pokud v PHP nepoužíváte set names, pak v databázi máte jiné kódování než jakou máte nastavenou (vetšinou latin1). Tedy "čip777" není "čip777". Toto platí i o prostředí. Ten select musíte mít nastaven na stejné kódování jako PHP.
-
MySQL: 5aff521558dc12cc9e880773e6754c0d PHP5: 5aff521558dc12cc9e880773e6754c0d V obou případech jsem použil kódování UTF-8. PHP v ISO-8859-2 37c0c9b708a4b14f88d4e9f00c7e64c8 PHP ve Windows-1250 ("č" je na stejné pozici jako v ISO) 37c0c9b708a4b14f88d4e9f00c7e64c8
-
Díky za vysvětlení. Tušil jsem, že to bude někde v kódování, ale nevěděl jsem, kde přesně hledat. Bohužel jsem převzal stránky po předešlém programátorovi a je to doslova chaos. Proto jsem se s tím zřejmě předtím nesetkal :) Díky, J.