2012-03-14 21 views
0

每次發佈POST時,都會獲得轉義字符。已提交表格字符串中的轉義字符

\ -> \\ 
' -> \' 
" -> \" 

我有一個多步表單,它將數據從一種表單傳輸到另一種表單。我將準備好的數據值保存在數據庫中。數據庫中的值目前看起來像Paul\'s House。用戶應該有可能在其字符串中使用單引號和雙引號。

這是一個簡單的例子證明了逃逸效應:

<?php 
echo $_POST['value']; 
?> 
<form action="form.php" method="post" enctype="multipart/form-data"> 
    <input type="hidden" name="value" value="Paul's House"> 
    <input type="submit" value="Next"> 
</form> 

爲什麼或誰逃脫字符串?用多種形式處理數據的正確方法是什麼?將它保存在數據庫中的正確方法是什麼?我應該使用stripslashes()還是打開一個很大的安全漏洞?

+2

[Magic quotes](http://php.net/manual/en/security.magicquotes.php)可能是您的問題。這個「功能」通常對依賴它的舊腳本啓用。該手冊有[幾個建議](http://php.net/manual/en/security.magicquotes.disabling.php)用於禁用功能(你絕對想要禁用它)。 – 2012-03-14 16:18:00

+0

'magic_quotes_gpc'爲'On'。將嘗試更改php.ini設置。 – testing 2012-03-14 16:20:43

+2

最新的PHP版本的三個歡呼實際上完全消除了魔術報價。 – 2012-03-14 16:27:10

回答

0

您必須關閉服務器中的magicquotes,否則您應該非常小心magicquotes的開/關狀態。