Autor Zpráva
Jakub Fojtik
Profil *
Dobrý den,

v databázi mám tabulku se sloupcem "heslo", ve kterém mám hesla šifrované pomocí password().
Mám tam mimo jiné záznam, který má ve sloupci heslo hodnotu *AADB89769FF364D, tj zašifrované "heslo".
Nevíte, proč mi nefunguje příkaz "select * from tabulka where (heslo=password('heslo'))"?
Příkaz "select * from prvni where (heslo='*AADB89769FF364D');" už funguje.

Nefunguje mi to ani v monitoru mysql, ani ve skriptech php, ani v phpmyadminu. Každý napíše jen "0 výsledků".
Spouštím to na localhostu na VertrigoServru, který jsem po instalaci pro MySql nijak nekonfiguroval.

Díky za odpověď
šárinka
Profil
zkus si to dát do proměnné
$pw = password('heslo');
"select * from tabulka where (heslo=$pw)"
Radim Hejhal
Profil
Popř. rozděl ten řetězec dotazu, PHP kontroluje řetězec v uvozovkách na proměnné, ale ne na názvy funkcí:
"select * from tabulka where (heslo=".password('heslo').")"
Mike874
Profil *
šárinka
PASSWORD je mysql funkce, takze do php promene to da tezko

Radim Hejhal
to samy, PASSWORD je mysql funkce, musi byt uvnitr mysql dotazu, vyhodit ji ven aby to zpracovavalo php nebude fungovat

Jakub Fojtik
nevim jak presne to zkousis, ale vysledek funkce PASSWORD ma 41 znaku (mysql5), to tvy heslo je nejaky kratky
pro hashovani hesla radsi pouzivej SHA1 (taky sql funkce) nebo MD5(taky v sql)
Radim Hejhal
Profil
Aha, myslel jsem že je to jeho php funkce. V tom případě je to tu ve špatné diskuzi -> Databáze na webu.
Jakub Fojtik
Profil *
Děkuju, konečně mi to funguje, chyba byla v tom, že jsem se řídil knížkou o Mysql 3 a na localhostu mám Mysql 5. No a v 3-jce píšou, že Password() udělá 16 znaků, takže jsem to měl v CHAR(16) a porovnával vlastně useknuté 16-ti místné heslo s tím 41-místným. A omlouvám se, že jsem to napsal do špatné diskuze, ale už jsem spěchal a nemohl jsem téma MySql najít.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: