echo $begrüßung;
Um all diese kümmert sich die Funktion mysql_real_escape_string().
Ja, soweit hatte ich das auch verstanden.
Mir scheint nicht, dass du meine Ausführungen in Gänze verstanden hast.
Nur, mein Stand war eben, dass die Funktion mysql_real_escape_string() nur beim Eintragen in die Datenbank benötigt wird.
Die Injektion bezieht sich nicht auf die Datenbank sondern auf das SQL-Statement. Und dem ist es egal, ob es nun beim Schreiben ungewünschte Dinge anstellt oder beim Lesen unerwünscht Daten rausrückt.
Wenn ich beispielsweise die Einträge in einem Gästebuch einfach nur auslese und diese bereits beim Eintragen maskiert wurden, warum sollte man das noch ein zweites Mal tun?
Diese Behandlung wird nicht für den Wert in dem Tabellenfeld durchgeführt sondern für das SQL-Statement, das hier als gemeinsames Transportmedium von Anweisung und Daten auftritt. Wenn der MySQL-Server dieses Statement auswertet, dann entfernt er diese Transportsicherung wieder, wenn er die Anweisungsteile von den Daten trennt. In den Feldern ist von der Maskierung nichts mehr vorhanden.
Und da ja auch kein Formular vohanden ist, kann doch auch nichts 'injiziert' werden.
Dem SQL-Statement ist es egal, woher es seine Daten bekommt. Es ist nicht allein der Sicherheitsaspekt, den du beachten musst, sondern allgemein betrachtet ein Kontext, in dem bestimmte Anforderungen an die Notation der Daten gelten. Ein ' in einem mit ' begrenztem String ist nun mal als ' zu notieren. Es spielt keine Rolle, ob da jemand was absichtlich ausnutzen will und dein SQL-Statement verfälscht
SELECT * FROM user WHERE name='administrator' AND password='' OR 1 --'
oder per Zufall dieses Zeichen auftaucht und nur einen Syntax-Fehler hervorruft
SELECT * FROM user WHERE name='irgendwer' AND password='hab's mit Sonderzeichen versehen'
echo "$verabschiedung $name";