dedlfix: PhpMyAdmin ändert Passwort ab, Problem mit Zeichensatz?

Beitrag lesen

echo $begrüßung;

Ich habe folgendes Problem mit PhpMyAdmin:

Glaub ich nicht, dass der phpMyAdmin das Problem ist. Vielmehr wird die Lücke in der Verarbeitungskette Browser<->PHP<->MySQL liegen.

Das Passwort ist als Spalte "pwd" mit Varchar(250) in der MySQL Tabelle "userdata" gespeichert. Als Kollation habe ich "latin1_german1_ci" verwendet.
"AES_ENCRYPT('$password',@pwd_key) in der Spalte "pwd" gespeichert.

Du möchtest also einen verschlüsselten Wert ablegen. Betrachte diesen Wert genauso wie beispielweise Daten einer Bilddatei als Binärdaten. Daraus ergibt sich, dass ein Binärdaten-Feldtyp besser geeignet ist als ein Feld für Zeichen, dessen Zeichen je nach Kodierung unterschiedliche Bytewerte ergeben können.

Ich vermute das es am Zeichensatz bzw. der Kollation liegt.

Du kommunizierst mit dem MySQL-Server vermutlich auf gut Glück. Besser ist es, nach dem Verbindungsaufbau die zu verwendende Kodierung explizit zu setzen. Das geht ab PHP 5.2.3 mit mysql_set_charset() ansonsten mit einer "SET NAMES ..."-Query.

In PhpMyAdmin wird mir folgendes angezeigt:
MySQL charset: UTF-8 Unicode (utf8)
MySQL connection collation: utf8_unicode_ci

Das ist für deine Scripte uninteressant, das ist nur die Kodierung, mit der der phpMyAdmin mit dem MySQL-Server redet.

Kann der Browser event. die Sonderzeichen nicht richtig interpretieren und PhpMyAdmin meint es gab eine Änderung?

Auch mit dem Browser solltest du nicht "Blindflug" reden sondern ebenfalls die Kodierung angeben, in der du ihm die Dokumente auslieferst. Er wird dann Formulardaten ebenfalls in dieser Kodierung zurückliefern.

echo "$verabschiedung $name";