为什么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表单输出数据。
你可能会打开糟糕的魔术引号 。 如果是这种情况, 您应该从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