htmlentities funktioniert nicht

misterminister

Grünschnabel
Hallo, ich bin ein ziemlicher Neuling auf dem Gebiet php und weiss deswegen bei einem Problem nicht weiter:

Ich habe ein Formular-Eingabefeld, bei welchem die Eingabe bestehen bleibt wenn das Formular sich selbst ausführt. Das klappt auch :) , nur werden leider Umlaute ziemlich zerpflückt. Ich habe es auf diese Art mit htmlentities versucht:

Der obere Teil:
Code:
$name=isset($_POST['name']) ? $_POST['name'] : "";

und dann das dazugehörige Stück unten:
Code:
<?php echo '<input type="text" name="name" size="50" maxlength="25" id="input" value="' . htmlentities($name) . '">'; ?>

Wie gesagt, ich habe keine Ahnung warum die Umlaute zerstört werden. Falls es weiter hilft, mein charset ist utf-8 ;-)

Vielen Dank und MfG,
misterminister
 
Das ist die normale arbeitsweise von htmlentities. Das sorgt dafür das umläute in Html kombatiblen schreibweise dargestellt werden.

Wird zum schutz von scripting atacken eingesetzt.

Schreib deine code so um dann geht das

PHP:
$name=isset(htmlentities($_POST['name'])) ? $_POST['name'] : "";

echo '<input type="text" name="name" size="50" maxlength="25" id="input" value="' . $_POST['name'] . '">';


Mfg Splasch
 
Ok danke erstmal,
jetzt kommt im Browser die Fehlermeldung
Parse error: parse error, unexpected T_STRING, expecting T_VARIABLE or '$' in ...
für den oberen Teil. Hab ein bisschen probiert aber bin wie gesagt noch nicht so fit auf dem Gebiet, wäre für eine Lösung dankbar :)
MfG misterministr
 
Ok dann schreib so hab den code nicht getestet.

PHP:
$name=isset($_POST['name']) ? $_POST['name'] : ""; 
$name=htmlentities($name);

echo '<input type="text" name="name" size="50" maxlength="25" id="input" value="' . $_POST['name'] . '">';

Mfg Splasch
 
Die htmlentities()-Funktion erwartet als eine ISO-8859-1-kodierte Zeichenkette. Bei abweichend kodierten Zeichenketten muss die Kodierung mit dem dritten Parameter angegeben. Doch da du UTF-8 verwendest, reicht auch die htmlspecialchars()-Funktion, um die HTML-Metazeichen zu maskieren.
 
Ah ok, also mit htmlspecialchars() klappt es, ich hab aber grad gemerkt dass ich auch einfach
PHP:
value="' . $_POST['pass']) . '"
machen kann :confused:

Naja, ok, jetzt habe ich nurnoch ein Problem, wenn ich die Daten als mail schicke oder in eine Datenbank eintragen lasse, werden die Umlaute wieder zerstückelt. Kann man da bei der Datenbankausgabe was drehen das es wieder "normal" wird ? Das mit der Mail ist jetzt erstmal nicht so schlimm :)

Vielen Dank und MfG,
misterminister
 
Zurück