2013-07-18 69 views
-2

我發佈了一些帶有特殊字符的輸入。 這裏有我想要插入到數據庫的一些輸入例如:htmlspecialchars解碼php mysql

<input type='text' name='address' value ='P. 34/1 Ap. 4/4 Rome, "xxx" street'> 
<input type='text' name='detail' value ='VAT Reg. No'> 

我喜歡插在這些DB中輸入:

htmlspecialchars($_POST['address']); 
htmlspecialchars($_POST['detail']); 

$db->sql_query(
    "INSERT INTO company SET 
     option_type=1, 
     option_name='". htmlspecialchars($address)."', 
     option_value='". htmlspecialchars($detail)."'" 
); 

我檢索的記錄:

<input type="text" value="htmlspecialchars_decode($rows['address'])"> 
<input type="text" value="htmlspecialchars_decode($rows['detail'])"> 

到目前爲止,這是正確的插入值,如:

地址:P. 34/1 Ap. 4/4 Rome, quot;xxxquot; street

細節:VAT Reg. No

但問題是,當我從數據庫讀取它們,它什麼也不顯示。我試圖使用htmlspecialchars_decodehtmlentities()但我沒有正確顯示所有字符。

當我使用htmlspecialchars_decode()顯示值時,只有detail值根本不顯示,地址是好的。

請問,有人可以幫助我嗎?

+0

您可以說明如何插入和檢索記錄嗎? – MBaas

+2

正確地逃離正確的場合! [大逃避現實(或:你需要知道如何處理文本中的文本)](http://kunststube.net/escapism/) – deceze

+0

我插入記錄: '$ db-> sql_query(「INSERT INTO company SET option_type = 1,option_name ='「。htmlspecialchars($ address)。'',option_value ='」。htmlspecialchars($ detail)。''「);' 我檢索了記錄: ' ' – rakela

回答

0

您並不需要轉換特殊字符來將thos字符串插入到數據庫中。不過你需要使用類似real_escape_string的方法來轉義它。

你應該只使用htmlspecialchars等輸出。

+0

謝謝,我這樣做。 – rakela

0

我希望你使用的是mysqli,而不是mysql。而且你一定要看看prepared statements,這應該可以節省很多謎題,並且可以消除更多潛在的安全漏洞。正如euantorano所說,沒有必要逃避絃樂。作爲一個建議,將O'Reilly添加到您的測試用例中 - 如果這樣可以很好地保存,那麼您就近了;)