2010-07-23 20 views
17

Używam następuje ustawienie wartości pola tekstowego ..Ustawianie wartości textarea formularza HTML?

<?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" /> 

ale nie wydaje się działać. Wartość wiadomości nie jest pusta. Czy ktoś ma pojęcie, dlaczego nie wypełnia wartości?

+2

Zachowaj ostrożność podczas używania zmiennej '$ _REQUEST', jeśli planujesz używać tych danych do czegoś więcej niż tylko do ponownego umieszczenia w formularzu. Na podstawie Twojej dyrektywy 'variables_order' (http://www.php.net/manual/en/ini.core.php#ini.variables-order) użytkownik może potencjalnie nadpisać zmienną' message' bez twojej wiedzy. - http://php.net/manual/en/reserved.variables.request.php –

+0

@Jeff tak bardzo, jak to jest poprawne, bezpośrednim problemem jest OP w ogóle nie oczyszczający treści wiadomości. – Gordon

Odpowiedz

44

Textarea nie ma wartości. Musisz wstawić swoją wiadomość między tagami otwierającymi i zamykającymi.

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

Proponuję również uniknięcie tej wartości - 'htmlspecialchars()' –

+1

Inną bardzo solidną alternatywą dla odkażenia danych wejściowych jest użycie HTMLPurifier. – nico

+0

I +1 za niestosowanie shorttagów, nie zawsze masz kontrolę nad hostem php.ini i może się okazać, że host go wyłączył, ale jeśli użyjesz pełnych tagów php, nigdy nie będziesz miał tego problemu. – xj9

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

Uwaga: Upewnij $message jest odpowiednio oczyszczone i że short_open_tag jest włączony. W przeciwnym razie odpowiedź @ fabric jest lepszą odpowiedzią.

Powiązane problemy