我想知道为什么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\
为什么反斜杠在那里?
答案 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)
答案 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