2011-12-03 72 views
0

假設你有一個用戶名文本<INPUT>,他們決定鍵入避免雙重編碼在<INPUT>同時使用的htmlspecialchars

Johnny's Pizza 

這是保存在DB作爲

Johnny's Pizza 

但如果用戶決定編輯,我重新填寫文本<INPUT>如下

echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8')); 

這將顯示爲

Johnny&#039;s Pizza 

裏面的輸入字段。

PHP.net有comment here建議使用

echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8', FALSE)); 

就是FALSE$double_encoding,但我仍然得到

Johnny&#039;s Pizza 
在輸入字段

有沒有解決這個雙編碼的方法嗎?這是不是可以同時仍使用ENT_QUOTES能解決嗎?

使用笨2.0.3。

回答

2

使用htmlspecialchars是正確的方法,如果直接輸出到頁面中,將不會給出描述的結果。

想必form_input函數需要接受文本和HTML沒有,所以它運行htmlspecialchars本身。如果是這樣,解決方案是隻傳遞文本,而不是先編碼HTML的值。

+0

我用笨的框架,在這裏 - 所以,如果你是正確的,你說我可能下降'htmlspecialchars'從表單輸入? – pepe

+0

明顯地,codeigniter的表單助手已經處理了運行你的值的'htmlspecialchars' --- http://codeigniter.com/forums/viewthread/158843/P15 ---所以我在這裏做的方式意味着我'這樣做兩次 – pepe

+1

如果我們找到[那個函數](https://github.com/EllisLab/CodeIgniter/blob/develop/system/helpers/form_helper.php#L185),並且繼續直到我們點擊[這個函數](https://github.com/EllisLab/CodeIgniter/blob/develop/system/core/Common.php#L561),我們可以看到'htmlspecialchars'已經被使用了,你不需要再次使用它。 – Quentin