Tom: Wenn es um Passworte geht ...

Beitrag lesen

Hello,

Ich versteh ehrlich gesagt nicht was mir das bringen soll wenn ich ein slash in mein string einbaue?

Wenn ich nun mysql_escape_string der Datenbank übergebe dann haut er doch alles kaputt.

Also wenn ich mir das Beispiel anschaue sehe ich keine Sinn wozu das ganze?


<?php
   $item = "Zak's Laptop";
   $escaped_item = mysql_escape_string($item);
   printf ("Escaped string: %s\n", $escaped_item);
?>

Das Beispiel oben führt zu dieser Ausgabe:

Escaped string: Zak's Laptop

Ganz ruhig Blonder... nicht aufregen ;-) [bin ja auch schon teilergraut]

Datenzustandsdiagramm
Wo wird was an welcher Stelle wie und warum dargestellt?

Ich weiß nicht, wer dieses printf() in Verbindung mit MySQL und PHP 4.x hier eingeführt hat. Das ist obolete.

Der Query-String wird ganz normal durch

$sql = "update $table set $sets where $where" oder  *1)
$sql = "select $fields from $table $where $order $limit"

usw

zusammengestellt und dann mit

$res = mysql_query($sql,$con);

abgesetzt.

Wenn jetzt in den STRINGS von $fields, $table, $where, $sets, ...
unerlaubte Zeichen drinstehen, dann geht entweder das Query schief (das ist
noch gut) oder die Datenbank krachen.

*1) "where" steht hier absichtlich NICHT innerhalb des $where, da für den Fall eines Fehlers (Fehlen von $where) auch keine Beschädigung an der Datenbank stattfindet. Es gibt nur einen Fehler für die WHERE-CLAUSE.

Alle API-Funktionen für datenverändernde Queries solte man so aufbauen. Wenn wirklich keine Einschränkung vorhanden ist, kann man immer noch
"$primary = $primary" schreiben oder wenn man tatsachlich den Autoincrement zurücksetzen muss, ein spezielles Query dafür vorhalten.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen