2010-07-23 7 views
17

ich die folgende Verwendung des Werts eines Textbereich zu setzen ..Einstellungswert eines HTML-Formulars textarea?

<?php 
$message = $_REQUEST['message']; 
?> 
<br/><b>Description</b><br/> 
<TEXTAREA NAME="message" COLS=40 ROWS=6 value="<?=$message;?>"></TEXTAREA><br/><br/> 
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> 

aber es scheint nicht zu funktionieren. Der Wert der Nachricht ist nicht null. Hat jemand eine Idee, warum es den Wert nicht füllt?

+2

Seien Sie vorsichtig, wenn Sie die Variable '$ _REQUEST' verwenden, wenn Sie diese Daten für mehr als nur das Zurücksetzen in ein Formular verwenden möchten. Basierend auf Ihrer 'variables_order' Direktive (http://www.php.net/manual/en/ini.core.php#ini.variables-order) könnte ein Benutzer möglicherweise die Variable' message' überschreiben, ohne dass Sie es wissen. - http://php.net/manual/en/reserved.variables.request.php –

+0

@Jeff so viel wie das richtig ist, ist das unmittelbare Problem, dass das OP den Inhalt der Nachricht überhaupt nicht bereinigt. – Gordon

Antwort

44

Textarea hat keinen Wert. Sie müssen Ihre Nachricht zwischen den öffnenden und schließenden Tags einfügen.

<textarea><?php echo htmlspecialchars($message); ?></textarea> 
+1

Ich würde vorschlagen, den Wert auch zu umgehen - 'htmlspecialchars()' –

+1

Eine weitere sehr robuste Alternative für die Bereinigung der Eingabe ist die Verwendung von HTMLPurifier. – nico

+0

Und +1 für die Verwendung von Shorttags, haben Sie nicht immer die Kontrolle über Ihre Hosts php.ini und Sie können feststellen, dass Ihr Host sie deaktiviert hat, aber wenn Sie vollständige PHP-Tags verwenden, werden Sie nie dieses Problem haben. – xj9

7
<textarea name="message" cols="40" rows="6"><?=$message?></textarea> 

Hinweis: Vergewissern Sie sich $message korrekt desinfiziert ist und dass short_open_tag aktiviert ist. Andernfalls ist die akzeptierte Antwort von @ Fabric eine bessere Antwort.