Hallo, ik heb een heel erg vreemd probleem, waar ik niet uitkom, zelfs niet na veel documentatie erover te hebben gelezen.
Het gaat over een simpele wachtwoord encryptie in php/mysql.
De gebruiker logt zich in en komt in een gepersonaliseerd gedeelte.
Hierin wil deze een test uitvoeren, en krijgt hiervoor een activatie code, als volgt:
(Sessies werken overigens prima en de waarden worden ook goed in de database gezet.)
Ook als ik echo $query doe, ziet deze er goed uit.
In de database komt er nu netjes te staan:
ook al staat er in de mysql documentatie het volgende:
The PASSWORD() function is non-repeatable. That is, with a given argument X, successive calls to PASSWORD(X) generate different results.
toch blijft de password functie bij mij steeds de output: 565491 geven bij invoer 123456
Daarom wil ik als volgt later wanneer de activation_key wordt ingevuld, bij het uitvoeren van een test, controleren of de juiste activatie code bij de juiste gebruiker hoort:
Dus als ik "123456" invul, dan zou de PASSWORD functie deze converteren en zou deze gelijk moeten zijn aan de al geconverteerde waarde in de database. Het user_id klopt ook 100% zeker, alleen krijg ik steeds een lege resultset terug. Iemand enig idee wat ik fout doe. Heb ook gelezen dan de password functie eigenlijk beter niet kan worden gebruikt maar SHA1 of MD5, maar wil eerst dit aan de praat hebben
Bvd
Het gaat over een simpele wachtwoord encryptie in php/mysql.
De gebruiker logt zich in en komt in een gepersonaliseerd gedeelte.
Hierin wil deze een test uitvoeren, en krijgt hiervoor een activatie code, als volgt:
(Sessies werken overigens prima en de waarden worden ook goed in de database gezet.)
PHP:
1
2
3
4
5
| $_SESSION["activation_key"] = "123456"; $query = "INSERT INTO ".$db_table_sessions."( user_id, time_stamp, ip_address, activation_key ) " ."VALUES(".$_SESSION["user_id"].", '%".$time_stamp."%', '".$ip_address."', PASSWORD('".$_SESSION["activation_key"]."') )"; mysql_query( $query ); |
Ook als ik echo $query doe, ziet deze er goed uit.
In de database komt er nu netjes te staan:
code:
1
2
3
4
5
| -------------------------------------------------------------------------- | session_id | user_id | time_stamp | ip_address | activation_key | -------------------------------------------------------------------------- | 7 | 73 | 2003-12-29 02:30:03 | 127.0.0.1 | 565491 | -------------------------------------------------------------------------- |
ook al staat er in de mysql documentatie het volgende:
The PASSWORD() function is non-repeatable. That is, with a given argument X, successive calls to PASSWORD(X) generate different results.
toch blijft de password functie bij mij steeds de output: 565491 geven bij invoer 123456
Daarom wil ik als volgt later wanneer de activation_key wordt ingevuld, bij het uitvoeren van een test, controleren of de juiste activatie code bij de juiste gebruiker hoort:
PHP:
1
2
3
4
5
6
| $activation_key = $_POST["input_activation_key"]; $query = "SELECT * " ."FROM ".$db_table_sessions." " ."WHERE activation_key=PASSWORD('".$activation_key."') " ."AND user_id=".$_SESSION["user_id"]; |
Dus als ik "123456" invul, dan zou de PASSWORD functie deze converteren en zou deze gelijk moeten zijn aan de al geconverteerde waarde in de database. Het user_id klopt ook 100% zeker, alleen krijg ik steeds een lege resultset terug. Iemand enig idee wat ik fout doe. Heb ook gelezen dan de password functie eigenlijk beter niet kan worden gebruikt maar SHA1 of MD5, maar wil eerst dit aan de praat hebben