Formular senden an Frameset -> Strings escaped
dhillo
- php
Also ich habe ein Formular, welches an ein Frameset sendet. Nun muss ich ja die $_POST strings vom Formular aus meiner Frameset Datei in die einzelnen Frames bringen (<frame src="main.php?str=$str>). Damit aber nicht einfach irgendwelche Sonderzeichen verschwinden oder komisch escaped werden muss ich mich da ja drum kümmern, doch bei all der Fülle an Funktionen ("urlencode", "addslashes", "htmlentities",...) verlier ich leicht die Übersicht und wollte mal nachhaken wie ihr das machen würdet. Vielleicht hattet ihr selbst schon das Problem.
Thx im Vorraus
MfG
dhillo
(<frame src="main.php?str=$str>). Damit aber nicht einfach irgendwelche Sonderzeichen verschwinden oder komisch escaped werden muss ich mich da ja drum kümmern, doch bei all der Fülle an Funktionen ("urlencode", "addslashes", "htmlentities",...) verlier ich leicht die Übersicht und wollte mal nachhaken wie ihr das machen würdet.
urlencode() kodiert einen ganzen Haufen Zeichen (http://www.faqs.org/rfcs/rfc2396.html, 2.4) in eine Zeichenkette bestehend aus dem Prozentzeichen und dem Zeichencode im Hexadezimalformat ("%3F"). Diese Form ist für URLs vorgesehen, eignet sich aber für die meisten Fälle, in denen Textdaten durch unsichere Kanäle (sicher im Sinne von "was rein geht, kommt auch wieder raus") übertragen werden müssen.
addslashes() stellt einigen, wenigen Zeichen einen Rückstrich voran, um zu verhindern, dass sie ihre ursprünglich angedachte Funktion ausführen, dabei geht es hauptsächlich um die Anführungszeichen. Diese Form ist nur für Anwendungen interessant, denen Befehle in Textform übergeben werden, um Befehlsteil vom Datenteil unterscheiden zu können. SQL-Datenbanken sind so ein Fall (INSERT INTO tabelle SET name="Hans "Guck-in-die-Luft" Normaluser", alter=23;).
htmlentities() sorgt dafür, dass Nicht-US-ASCII-Zeichen sowie <, > und & durch entsprechende HTML-Maskierungen ersetzt werden (ü = ü). Diese Form ist nur für HTML-Quelltext gedacht.
Für Deine Anwendung musst Du in jedem Fall die Daten mittels urlencode() behandeln:
$adresse = "main.php?str=" . urlencode($str);
Gibst Du die erzeugte Adresse anschließend in einen HTML-Quelltext aus, muss sie noch durch htmlentities() verarbeitet werden:
echo "<frame src="" . htmlentities($adresse) . "">";
Es ist übrigens ein sehr häufiger Fehler, URLs mit Parametern im HTML-Quelltext nicht mittels htmlentities() bzw. entsprechend manuell zu behandeln. Folgendes ist falsch:
<frame src="main.php?str1=bla&str2=blabla">
Richtig wäre:
<frame src="main.php?str1=bla&str2=blabla">