htmlentities verkorkst?
Sieger
- php
Hallo,
aus einem Formular wird eine Post-Variable namens d_text übermittelt. Sie kann alles Mögliche an Text enthalten, weswegen sie ein Sicherheitsrisiko für den Server darstellt.
Also möchte ich schon vor dem Einspeisen in die Datenbank die Variable d_text mit htmlentities entschärfen.
Folgenden Code habe ich:
echo $_POST['d_text'];
$text=htmlentities($_POST['d_text']);
echo $text;
Und Folgendes wird bei meinem Test mit "äöüß" ausgegeben:
äöüßäöüÃ�
Was ist da los?
Nebeninfo: In dem sendenden Formular ist kein enctype angegeben.
MfG
Sieger
Ahoi Sieger,
Und Folgendes wird bei meinem Test mit "äöüß" ausgegeben:
äöüßäöüÃ�
Was ist da los?
ich würd das mal ganz frech auf die codierung schieben (utf vs. iso)
außerdem dann noch die frage gibst du das so aus oder schreibst du es wieder in eine textarea.
MfG
aus einem Formular wird eine Post-Variable namens d_text übermittelt. Sie kann alles Mögliche an Text enthalten, weswegen sie ein Sicherheitsrisiko für den Server darstellt. Also möchte ich schon vor dem Einspeisen in die Datenbank die Variable d_text mit htmlentities entschärfen.
Für diesen Anwendungsfall gibt es mysql(i)_real_escape_string. Was kümmert deine Datenbank irgendwelche HTML-Entities?
Und Folgendes wird bei meinem Test mit "äöüß" ausgegeben:
äöüßäöüÃ�
Was ist da los?
Ein Zeichensatzproblem?
Siechfred
Hi
danke an alle für die zahlreichen Antworten.
Ein Zeichensatzproblem?
Wie unterbinde ich dieses Problem? Am Browser kann es wohl eher nicht liegen, dann wohl am Formular, das die POST-Daten absendet.
Ich schätze, es muss wohl das Attribut bei "enctype" am Formular richtig gesetzt werden. Welche Angabe ist da die richtige?
MfG
Sieger
Hi
Wie unterbinde ich dieses Problem? Am Browser kann es wohl eher nicht liegen, dann wohl am Formular, das die POST-Daten absendet.
Ich schätze, es muss wohl das Attribut bei "enctype" am Formular richtig gesetzt werden. Welche Angabe ist da die richtige?
Kurze Ergänzung: Es gibt in dem Formular, neben ebendieser Textarea mit namen d_text, auch (aber nur, wenn der User es auch will) ein Datei-Upload-Feld.
MfG
Sieger
Ahoi Sieger,
Ich schätze, es muss wohl das Attribut bei "enctype" am Formular richtig gesetzt werden. Welche Angabe ist da die richtige?
Da schätzt du IMHO falsch, das Formular hat damit nichts zu tun, außer
du würdest dort irgendwie den Contenttype ändern. Auf denn es letzlich
an kommt, der gilt für das ganze element und wird im header angegeben:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
z.B. für UTF-8
ist keiner angegeben wird geraten.
MfG
Hi
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
Wenn ich das angebe, passiert nix, es bleiben die Zeichen so wie sie waren.
Wenn ich iso-8859-1 angebe, wirds nur noch schlimmer.
Ich habe das mit den Zeichensätzen und deren Unterschiede nie kapiert. Wo ist der Unterschied zwischen UTF-8 und iso-8859-1? Und wenn die HTML-Seite so angegeben werden kann, warum kann man im Browser auch nochmal einen Zeichensatz angeben?
MfG
Sieger
Hello out there!
Ich habe das mit den Zeichensätzen und deren Unterschiede nie kapiert.
Dazu ist es auch erforderlich, den Unterschied zwischen Zeichsatz und Zeichencodierung zu kapieren.
Kurz gesagt: </archiv/2007/6/t154844/#m1009055>, </archiv/2007/5/t153210/#m997116>
Auführlicher in http://jendryschik.de/wsdev/einfuehrung/grundlagen/zeichenkodierung
See ya up the road,
Gunnar
Hi
Dazu ist es auch erforderlich, den Unterschied zwischen Zeichsatz und Zeichencodierung zu kapieren.
Kurz gesagt: </archiv/2007/6/t154844/#m1009055>, </archiv/2007/5/t153210/#m997116>
Auführlicher in http://jendryschik.de/wsdev/einfuehrung/grundlagen/zeichenkodierung
Moment, mein Browser stellt doch alles richtig dar! Im Quelltext steht:
äöüßäöüÃ�
und der Browser wandelt die auch richtig um und stellt sie mir wie folgt dar:
äöüßäöüÃ�
Hier der Screenshot:
http://img50.imageshack.us/img50/9168/zeichensaetzewu0.png (89,5 KB)
Es läuft momentan alles richtig - mal davon abgesehen, dass htmlentities die Umlaute in die falschen Werte umwandelt.
MfG
Sieger
hi,
Moment, mein Browser stellt doch alles richtig dar! Im Quelltext steht:
äöüßäöüÃ�
In welcher Kodierung diese Zeichen vorliegen, lässt sich daraus nicht erkennen.
und der Browser wandelt die auch richtig um und stellt sie mir wie folgt dar:
äöüßäöüÃ�
Es läuft momentan alles richtig -
Das klingt nach deiner bisherigen Beschreibung eher nach glücklichem Zufall.
mal davon abgesehen, dass htmlentities die Umlaute in die falschen Werte umwandelt.
Finde heraus, in welcher Kodierung du die Daten geliefert bekommst; überlege, in welcher du sie ausgibst/darstellen lässt.
Und schau dir anschliessend auch mal den optionalen dritten Parameter von htmlentities an.
gruß,
wahsaga
Hi,
Also möchte ich schon vor dem Einspeisen in die Datenbank die Variable d_text mit htmlentities entschärfen.
der Grundsatz lautet: Wenn Du einen Wert in einen Kontext bringst, musst Du ihn kontextspezifisch kodieren. Kontextspezifisch, nicht willkürlich. Eine Datenbank ist kein HTML-Kontext.
Cheatah