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

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

  

假设他们用户输入值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\ 

为什么那里有反斜杠?

删除斜杠时不会添加它们,当启用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表单输出数据。

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

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

优雅的武器,更加…… 文明时代。

你可能会打开糟糕的魔术引号 。 如果是这种情况, 您应该从php.ini中禁用它们 。

见http://php.net/manual/en/security.magicquotes.php

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

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

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

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