2012-03-14 20 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的开/关状态。