2010-02-17 30 views
4

剝去一個輸入框的報價我有這樣的:如何使用PHP

<input name="title" type="text" class="inputMedium" value="' . $inputData['title'] . '" /> 

我要剝去用戶輸入的報價,這樣,如果有人進入類似: 「這是我的標題是」它不會弄亂我的代碼。

我嘗試這樣做,它不工作: $ inputData [ '標題'] = str_replace函數( '「', '',$ _ POST [ '標題']);

回答

5

如果我理解正確的問題,你想從刪除" 0所以你的HTML代碼不會搞砸了嗎?

如果是這樣,「正確」的解決方案是不去除雙引號,但要在轉義之前做實際輸出。


考慮你生成HTML,你應該使用htmlspecialchars功能;這樣,雙引號(和幾個其他字符)將被編碼爲HTML實體,並且在注入HTML標記時不會造成任何麻煩。

例如:

echo '<input name="title" type="text" class="inputMedium" value="' 
    . htmlspecialchars($inputData['title']) 
    . '" />'; 

注:根據您的情況(特別是關於編碼/字符集,你可能會使用),你可能一些其它附加參數傳遞給htmlspecialchars


一般來說,您應該始終將您發送的數據作爲輸出轉義,無論輸入格式爲何種類型。

例如:

+0

感謝您的詳細解釋 – Babak 2010-02-17 20:44:42

+0

不客氣:-)玩得開心! – 2010-02-17 20:54:25

+0

只要注意:可以在輸入html中使用單引號而不是雙引號(如)。但是由於htmlspecialchars單獨留下單引號,這可能是一個安全漏洞? – Sam 2010-02-28 23:21:11

1

用戶輸入應該通過htmlspecialchars()運行在這種情況下使用。

-2

我強烈建議你顯示任何用戶在任何地方發生前使用ヶ輛($字符串,ENT_QUOTES) ...

+0

htmlentities hasnt for me for work,only htmlspecialchars()did。問題是由於某些原因htmlentities不能正確處理重音 – Guillermo 2010-03-15 16:57:45

+0

重音是'或'? – Kirzilla 2010-03-15 19:22:30