2012-09-25 87 views
0

我正在嘗試讀取文本區域(id = Message)並將其保存到數據庫中。問題是,如果用戶在文本中輸入單引號('),則下面的代碼都無法處理它。經典asp請求單引號輸入

Request("Message") 

Replace(Request("Message"),"'","") 

都失敗並顯示錯誤消息

Security violation occurred 
Incorrect value was passed for field "Message" 

好像它一旦失敗,因爲它讀取Request("Message")

+0

爲什麼不把標準Replace(Request(「Message」),「'」,「''」)?你沒有使用參數嗎? – Fionnuala

+0

我不知道在ASP或Active Scripting環境中出現的錯誤消息是「字段傳遞的值不正確」。您是使用IIS的ASP還是像Chilisoft ASP這樣的第三方實現? – Dai

回答

0

我懷疑這可能是託管級別的安全措施,以防止SQL注入。如果是這種情況,唯一的解決辦法可能是要求你的主機禁用它(並且自己保護),或者在表單提交時添加一些JavaScript代替或HTML編碼撇號。

您是在本地計算機上還是在託管於網站託管公司的網站上測試此功能?

0

你應該使用命令對象安全userentered數據保存到數據庫中。

set cmd = Server.CreateObject("ADODB.Command") 
set cmd.ActiveConnection = conn 
cmd.CommandText = "INSERT INTO table(message) VALUES(?)" 
cmd.CommandType = 1 
recordsAffected = 0 
call cmd.Execute(recordsAffected, array(Request("Message")&"")) 

if recordsAffected <> 1 then 
    Response.Write "Something went wrong!" 
else 
    Response.Write "Data saved!" 
end if 

上面的代碼假設你有一個開放連接到存儲在變量conn的數據庫。