Problem mit Gänsefüßchen
Bug
- php
Hallo,
vom input- Feld herereinkommenden Text behandle ich so:
if ( !get_magic_quotes_gpc() )
{
foreach($_POST as $k => $v ) $_POST [$k] = addslashes( $v );
}
Entgegen der addslashes Dokumentation
"das bedeutet, der String wird in der Form O'reilly erwartet. Dies ist ausschließlich für das Einfügen von Daten in eine Datenbank notwendig, der extra \ wird nicht wirklich eingefügt."
sind die Backslashes (nicht Slashes) drin (mit phpmyadmin geprüft).
Nun möchte ich diesen Wert zur Bearbeitung wieder in einem input- Feld sichtbar machen:
<input type='text' name='emb_object' maxlength=2048 value='<object title=youtube type=\"application/x-shockwave-flash\" data=\"http://hi.ekirche.tv/static/watch/FlowPlayer.swf\" width=\"520\" height=\"312\" id=\"FlowPlayer\"><param name=\"movie\" value=\"http://hi.ekirche.tv/static/watch/FlowPlayer.swf\" /> <param name=\"quality\" value=\"high\" /> <param name=\"scale\" value=\"noScale\" /> <param name=\"wmode\" value=\"transparent\" /> <param name=\"flashvars\" value=\"config={baseURL:\'http://hi.ekirche.tv/static/watch/F5ADaBddfE\', videoFile:\'F5ADaBddfE.flv\', splashImageFile:\'F5ADaBddfE_ov.jpg\', autoPlay:false, loop:false}\" /></object>'
Der value endet mit dem ersten ' hier: baseURL:'
Selbst wenn die Backslashes nicht wären, hätte ich ein Problem damit. Wie bekomme ich ' und " in ein input- Feld?
LG Bug
Hi,
vom input- Feld herereinkommenden Text behandle ich so:
if ( !get_magic_quotes_gpc() )
{
foreach($_POST as $k => $v ) $_POST [$k] = addslashes( $v );
}
Was versprichst du dir davon?
> Selbst wenn die Backslashes nicht wären, hätte ich ein Problem damit. Wie bekomme ich ' und " in ein input- Feld?
Du befindest dich in diesem Falle im Kontext HTML - also hast du [Zeichen, die dort Sonderbedeutung haben](http://de.selfhtml.org/html/referenz/zeichen.htm#benannte_html), selbstverstaendlich auch \*diesem\* Kontext entsprechend zu behandeln.
Die PHP-Funktion dafuer heisst htmlspecialchars.
MfG ChrisB
--
„This is the author's opinion, not necessarily that of Starbucks.“
P.S.:
Du befindest dich in diesem Falle im Kontext HTML - also hast du Zeichen, die dort Sonderbedeutung haben, selbstverstaendlich auch *diesem* Kontext entsprechend zu behandeln.
Das ' ist dort nicht erwaehnt - man braucht es auch nicht zu maskieren, wenn man zur Begrenzung von Attributwerten im HTML-Code Anfuehrungszeichen nimmt (was ich generell machen wuerde).
MfG ChrisB
Hallo, Chris,
Du befindest dich in diesem Falle im Kontext HTML - also hast du Zeichen, die dort Sonderbedeutung haben, selbstverstaendlich auch *diesem* Kontext entsprechend zu behandeln.
Das ' ist dort nicht erwaehnt - man braucht es auch nicht zu maskieren, wenn man zur Begrenzung von Attributwerten im HTML-Code Anfuehrungszeichen nimmt (was ich generell machen wuerde).
Danke dir. Die Begrenzung von Attributwerten mache ich generell mit ', damit das Umfeld (z.B. PHP-Programm) nicht daran herumdeutelt. In diesem Fall ist es aber falsch.
Hat denn das ' keinen HTML- Code? Den könnte ich ja ausdrücklich mit str_replace erzwingen.
LG Bug
Hi,
Die Begrenzung von Attributwerten mache ich generell mit ', damit das Umfeld (z.B. PHP-Programm) nicht daran herumdeutelt.
Das "deutelt" nicht, wenn man es vernuenftig zu nutzen weiss.
http://www.php.net/manual/en/language.types.string.php
In diesem Fall ist es aber falsch.
Nein, auch die einfachen Hochkommata koennen in HTML als Attributwertbegrenzer benutzt werden. Ich tendiere zu den Anfuehrungszeichen, aber "falsch" sind die anderen trotzdem nicht.
Hat denn das ' keinen HTML- Code? Den könnte ich ja ausdrücklich mit str_replace erzwingen.
Du koenntest auch einfach mal zur genannten PHP-Funktion im Manual nachlesen ...!
MfG ChrisB
@@Bug:
Hat denn das ' keinen HTML- Code?
Alle Zeichen lassen sich numerisch referenzieren. [QA-ESCAPES]
' hat den Codepoint U+0027.
Live long and prosper,
Gunnar