2010-07-23 94 views
17

我使用以下設置文本區域..設置HTML表單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" /> 

的價值,但它似乎沒有奏效。消息的值不爲空。有誰知道爲什麼它沒有填補價值嗎?

+2

使用'$ _REQUEST'變量時要小心,如果您打算將該數據用於其他任何事情,而不僅僅是將其放回表單中。根據您的'variables_order'指令(http://www.php.net/manual/en/ini.core.php#ini.variables-order),用戶可能會在不知情的情況下覆蓋'message'變量。 - http://php.net/manual/en/reserved.variables.request.php – 2010-07-23 12:46:25

+0

@Jeff儘管這是正確的,但直接的問題是OP沒有消毒消息的內容。 – Gordon 2010-07-23 13:10:32

回答

44

Textarea沒有價值。您需要在開始和結束標記之間插入消息。

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

我會建議轉義值 - 'htmlspecialchars()' – 2010-07-23 12:39:55

+1

另一個用於消毒輸入的非常強大的替代方法是使用HTMLPurifier。 – nico 2010-07-23 13:41:47

+0

並且+1不使用短標籤,您並不總是能夠控制您的主機php.ini,並且您可能會發現您的主機禁用了它們,但是如果您使用完整的php標籤,則永遠不會出現該問題。 – xj9 2010-07-23 13:51:26

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

注:確保$message正確消毒,並啓用了short_open_tag。否則,@ fabric接受的答案是更好的答案。