PASSWORD-Funktion in Mysql mit Sonderzeichen
Heinzi
- datenbank
Hi zusammen,
ich habe folgendes Problem:
Wenn ich ein Update auf einen Datensatz anwende und ein Passwort mit der Funktion PASSWORD() verschlüssele, bekomme ich den "richtig verschlüsselten" Wert.
Sobald ich aber aus meinem PHP-Skript das Ganze ausführe, entsteht ein anderes verschlüsseltes Passwort.
Das passiert nur bei Passwörtern mit Sonderzeichen und ist -so glaube ich- kein grundsätzliches Encoding (UTF8-Prolem).
PHP-Skript und DB sind in Utf8.
Danke für jedes Feedback.
gruß Heinzi
Hallo
Wenn ich ein Update auf einen Datensatz anwende und ein Passwort mit der Funktion PASSWORD() verschlüssele, bekomme ich den "richtig verschlüsselten" Wert.
Du schreibst hier nicht wie du den Update machst. Auch mit PHP oder auf der Kommandozeile?
Das passiert nur bei Passwörtern mit Sonderzeichen und ist -so glaube ich- kein grundsätzliches Encoding (UTF8-Prolem).
Könnte schon sein. Du musst sicherstellen, das wirklich alles auf UTF-8 läuft. ALso die Connection zum Server, die PHP-Seiten und die DB selbst.
viele Grüße
hawk
Sollte alles UTF8 sein.
Sorry, stimmt:
Ich starte das PHP-Skript auf Kommandoebene oder auch über Browseraufruf und es kommt die falsche Verschlüsselung an.
manuell über phpMyAdmin wird das andere, richtige PW gesetzt.
Die Update-Abfrage, die mir phpMyadmin anzeigt ist exakt diegleiche, die ich mir mit dem php-Skript ausgegeben lasse...
danke, gruß Heinzi
Wenn ich ein Update auf einen Datensatz anwende und ein Passwort mit der Funktion PASSWORD() verschlüssele, bekomme ich den "richtig verschlüsselten" Wert.
Wieso hinterlegst du das Passwort nicht MD5-Verschlüsselt? Dann verschlüsselst du die Eingabe mit md5 und vergleichst, ist sicherer.
Wenn du auf PASSWORD() bleiben willst, dann versuch es mal mit folgendem Query:
mysql_query("SET NAMES 'utf8'");
MFG
Bassist
hatte ich schon probiert....
es entsteht trotzdem ein anderer Wert.
ich muß bei der PASWWORD()-Funktion bleiben....
gruß heinzi
ich muß bei der PASWWORD()-Funktion bleiben....
Dann klinke ich mich ab hier aus, mein Datenbank-wissen ist doch recht begrenzt.
MFG
Bassist
Hi,
ich muß bei der PASWWORD()-Funktion bleiben....
Es handelt sich also bei den Daten um die Zugangspasswörter von MySQL-Useraccounts?
Bei allem anderen wäre "muss" ja blödsinnig, und "dabei bleiben" noch gleich mal doppelt; denn:
MfG ChrisB
ja, es handelt sich um die Passwörter zu Useraccounts in Mysql.
Ich importiere Daten in ein neues system, welches auf diese Authentifizierung zurückgreift...
Ideen? danke, heinzi
Vielleicht noch ein Beispiel:
SELECT PASSWORD( 'äü§$%&' );
ergibt in PhpMyAdmin:79beaa983fe63381
Verschlüssele ich das per PHP-Skript kommt 108908383e8e4127 heraus...
heinzi
Hi!
Vielleicht noch ein Beispiel:
SELECT PASSWORD( 'äü§$%&' );
ergibt in PhpMyAdmin:79beaa983fe63381
Verschlüssele ich das per PHP-Skript kommt 108908383e8e4127 heraus...
Nochmal von vorn: In deinem PHP-Script machst du nach dem Verbindungsaufbau konkret was? Setzt du gleich danach ein mysql_set_charset() oder alternativ ein SET NAMES-Statement ab, in dem du die auf deiner Verbindung verwendete Zeichenkodierung angibst? Sendest du dann dein Passwort-Statement in genau dieser Kodierung? Hast du das beispielsweise mit einer Hexwert-Ausgabe (bin2hex()) überprüft?
Lo!
Hi und danke.
ich habe jetzt mal das passwort zu jeder zeit binär anzeigen lassen und da war wirklich der Unterschied.
Wenn ich an einer Stelle ein utf8_encode vorsetze funzt es...
Skripte und DB sind in UTF8.
das verstehe mal einer...
Aber egal: Danke für die Hilfgestellungen und Ideen.
Da kann ich jetzt weiter machen
gruß heinzi
Hi!
Skripte und DB sind in UTF8.
"DB ist UTF8" ist zu allgemein formuliert. Was genau ist UTF-8? Wichtig ist die Einstellung der einzelnen Felder sowie die Aushandlung nach dem Verbindungsaufbau. Letzteres wird gern vergessen und statt ersterem wird gern auf die Datenbank- oder Tabelleneinstellung geschaut.
Lo!