Hi!
danke für deine Rückmeldung.
Hast du den Artikel mittlerweile gelesen und verstanden, dass man beim Einfügen von Daten in Strings,
die Code für ein bestimmtes System darstellen, diese Daten so notieren muss, dass sie Daten bleiben und
nicht durch nicht beachtete Zeichen zum Code werden?
Ja. ich habe den Artikel gelesen, sogar mehrmals, weil ich anfangs nicht richtig begriffen habe, worauf der Schreiber hinaus wollte.
Verstanden habe ich folgendes:
Wenn ich einen String wie diesen hier habe (ist aus dem Artikel kopiert)
"SELECT feldliste FROM tabelle WHERE feld='$variable'";
muss ich den String zwingend mit " beginnen und mit "; beenden. Außerdem muss ich darauf achten, die Werte, die ich in dem String eingebe ( z.B. $variable) in '' zu setzen. Das habe ich bei mir auch soweit berücksichtigt.
$aendern = "UPDATE rustleoaks Set
bilderraetsel=1 WHERE benutzername LIKE '$benutzername'";
Den Wert 1 habe ich nicht mit Hochkommas versehen, da es einen T_String Fehler verursacht. Irgendwo habe ich gelesen, Zahlen dürfen nicht in Hochkommas gesetzt werden.
Um zu verhindern, dass mir jemand einen Befehl über das Formular unterschiebt, sollte ich jedoch den String nichtso stehen lassen, sondern den Befehl mysql_real_escape_string() mit einfügen. Weiterer Vorteil, ich muss nicht darauf achten, ob ich etwas mit Backslash \ maskieren muss. Dann würde mein Befehl so aussehen:
[code lang=php]
$aendern = "UPDATE rustleoaks Set bilderraetsel='" . mysql_real_escape_string(1) . "' WHERE benutzername
LIKE '" . mysql_real_escape_string($_POST['benutzername']) . "'";
Da es sich bei der Zahl 1 um einen von mir vorgegebenen Wert und nicht um einen Wert aus Benutzereingaben handelt, kann ich den Befehl so verwenden (benutze mySQL). Die Besonderheit bei der LIKE-Angabe habe ich noch nicht ganz kapiert. Darf ich hier den Befehl mysql_real_escape_string() gar nicht verwenden, oder wird es nur wegen der eventuellen Verwendung von sprintf und dem %-Zeichen besonders aufgeführt?
Oder ist das alles auch wieder falsch?
Liebe Grüße
Poison