Sicheres Verschlüsseln

Deine Verschlüsselung erstellt '. Das schluckt das SQL nicht.
Hast du mysql_escape_string() drin?
 
Nein. Wo kommt das hin? mysql_escape_string($encode) ?
Wie lese ich dass dan wieder richtig aus, damit das entschlüsseln auch funktioniert?

PS: Vorher hats einmal geklappt. An den Längen kann es nicht liegen...?!
 
Lies mal in der Doku was mysql_escape_string macht. Dann weisst du a) wo es hingehört, b) was es macht und c) dass man keine Entschlüsselung dieses Befehls braucht da er keine Verschlüsselung vornimmt sondern nur dein Problem löst
 
@yaslaw:

Du meinst doch wohl [phpf]mysql_real_escape_string[/phpf]? Die alte Funktion mysql_escape_string ist seit PHP 5.3.0 als deprecated gemeldet!

Außerdem würde ich empfehlen, MySQLi oder PDO zu benutzen.

Du musst die Funktion anwenden, wenn du dein SQL-Query baust, z.B.:
PHP:
$sql = 'INSERT INTO tbl (encodedA, encodedB) VALUES (';
$sql += "'" . mysql_real_escape_string(encode($strA)) . "'";
$strl += ", '";
$sql += mysql_real_escape_string(encode($strB)) . "'";
$sql += ')';
 
Also ich habs jetzt folgendermassen gelöst:
PHP:
$query = "INSERT INTO mbr_new (sex, name, prename, street, place, phone, mail, birthday, how, comment) VALUES (";
			foreach($data as $dat)
				$query = $query."'".mysql_real_escape_string(encryptAES($dat))."', ";
			$query = substr($query, 0, -2);
			$query = $query.")";
			echo $query;

echo ergibt:
SQL:
INSERT INTO mbr_new (sex, name, prename, street, place, phone, mail, birthday, how, comment) VALUES ('', '', '', '', '', '', '', '', '', '')

und soviel steht dann auch in der Datenbank (nichts).

@Yaslaw: Dass man keine "Entschlüsselung" für diesen Befehl braucht meinte ich auch nicht. Aber solche Escape-Befehle sorgen ja dafür, dass Befehle in einem String nicht als Befehle ausgeführt werden. Manchmal wird dafür etwas geändert. Fals dies der Fall ist (Beispiel ' durch \' ersetzt), ergibt sich ein falsches Resultat beim Entschlüsseln - Das meinte ich.
 
Zuletzt bearbeitet von einem Moderator:
Das falsche 'Resultat' ergibt sich nur im SQL-Query selbst. MySQL liefert und speichert die Daten selbst im Originalzustand.
Das ist das gleiche wie wenn du Hochkommata innerhalb eines Strings in PHP maskierst:
PHP:
$str = 'Hier kommt eins: \'.';
Und im String selbst steht ja jetzt auch nicht \', sonder '.
 
Zurück