为什么php在替换双引号时插入反斜杠

时间:2010-10-25 17:57:06

标签: php javascript jquery

我想知道为什么php在删除双引号时会添加反斜杠。

<input type="text" name="number" id="number" />
<input type="button" name="button" id="button" value="Button" />

假设他们用户输入值5-1 / 2“并且我通过jquery的.get方法将其传递给处理页面。

$('#button').click(function(){

    $.get('determine.php?number='+$('#number').val(),function(data){
     $('#response').html(data);
    });

});

这是我的处理页面。

determine.php

$number = $_GET['number'];

$number = str_replace(array('"', "'"), '', $number);

echo $number;

//echos 5-1/2\

为什么反斜杠在那里?

4 个答案:

答案 0 :(得分:6)

删除斜杠时不会添加它们,当启用magic_quotes_gpc指令时,它会自动在查询字符串参数中将它们转义(默认情况下为5.30)。 这是一种安全预防措施,因此可以在数据库查询中安全地使用数据。您可以通过更改php.ini文件中的设置来禁用它们,请参阅http://www.php.net/manual/en/security.magicquotes.disabling.php

您还可以使用stripslashes删除它们:

$number = str_replace(array('"', "'"), '', stripslashes($number));
  

stripslashes()的一个示例是当PHP指令magic_quotes_gpc打开时(默认情况下它是打开的),并且您没有将此数据插入需要转义的位置(例如数据库)。例如,如果您只是直接从HTML表单输出数据。

答案 1 :(得分:2)

用户输入被魔术引号转义。

http://www.php.net/manual/en/function.get-magic-quotes-gpc.php

更优雅的武器...... 文明时代。

答案 2 :(得分:2)

您可能已启用错误magic quotes。如果是这种情况,you should simply disable them from php.ini

答案 3 :(得分:2)

请参阅http://php.net/manual/en/security.magicquotes.php

Magic Quotes是一个自动将传入数据转义为PHP脚本的过程。最好使用魔术引号进行编码,并根据需要在运行时转义数据。

启用时,所有'(单引号),“(双引号),\(反斜杠)和NULL字符都会自动使用反斜杠进行转义。

简而言之,魔术引号是PHP中的一项功能,其中引号字符会自动使用\字符进行转义。

以下是一些关闭魔术引号的解决方案:http://www.php.net/manual/en/security.magicquotes.disabling.php