echo $begrüßung;
- ok, wird beherzigt: Jedes in die DB schreiben von Daten!=int
soll sauber für mysql 'real' escaped werden.
Es schadet nicht, wenn auch Zahlenwerte in Hochkomma oder Anführungszeichen eingeschlossen werden. Ein SQL-Statement ist immer Text, egal, ob die Zahl nun als 42, '42' oder "42" notiert ist. In allen Fällen muss sie in eine Zahl umgewandelt werden, wenn sie in einem Zahlen-Feldtyp zu liegen kommen soll. Wenn vom Client eine Zahl (z.B. ein ID-Wert) erwartet wird, dann ist es keine gravierende Mehrbelastung, sie wie alle anderen Werte zu quotieren und zu maskieren. Alternativ kann sie in PHP mit intval() garantiert in einen Integer-Wert gewandelt werden. Zur Not kommt da eben 0 raus, wenn keine Zahl erkannt werden konnte.
- falls das Browser auf die Idee kommt, selbst zu maskieren,
Der Browser ist brav. PHP ist hier das Übel, bzw. dessen Feature "Magic Quotes".
sollte man das besser rückgängig machen (stripslashes()).
Frage: Kann ich stripslashes() pauschal über die Werte
laufen lassen, ohne vorher magic_quotes_gpc abzufragen.
Das ist nicht wirklich empfehlenswert. Pauschal ist zwar gut, aber nur gemäß Example#2, wenn dies einmalig am Script-Anfang erfolgt: http://de2.php.net/manual/en/security.magicquotes.disabling.php
Wird jetzt durch diese Vorgehensweise etwas anderes in der DB stehen, als jetzt ?
Sorgt "mysql_real_escape_string()" dafür, dass jetzt in meiner DB z.B. " steht ?
Nein. Die Maskierung erfolgt nur, weil Werte und Befehlsbestandteile in einem gemeinsamen Text (dem SQL-Statement) stehen sollen. Es ist dabei erforderlich zwischen " bzw. ' als Begrenzungszeichen und als Teil eines Wertes zu unterscheiden. Der SQl-Parser demaskiert die Werte, bevor sie in ein Feld eingetragen werden. MySQL speichert also die Roh-Form der Werte.
Muss ich entsprehend beim auslesen der Daten, (die dann ja
dargestellt werden sollen) den Schritt auch wieder umgekehrt
ausführen (so etwas wie unescape?)
Der Weg von MySQL zum Client ist anders. Hier kommen die Daten direkt und ohne in einen Text eingebettet zu sein. Du bekommst also bei einem SELECT die Rohform der Werte zurück.
echo "$verabschiedung $name";