为什么php在插入反斜杠的同时替换双引号
问题描述:
我想知道为什么PHP在我删除双引号时添加了反斜杠。为什么php在插入反斜杠的同时替换双引号
<input type="text" name="number" id="number" />
<input type="button" name="button" id="button" value="Button" />
说,他们的用户输入值5-1/2" ,我通过jQuery的。获得方法将它传递给处理页面。
$('#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://php.net/manual/en/security.magicquotes.php
魔术引号是输入数据自动地逃到PHP脚本的过程。根据需要,最好使用魔术引号进行编码,并在运行时转义数据。
当打开时,所有的'(单引号),“(双引号),\(反斜线)和NULL字符转义成自动反斜杠。
总之,魔术引号是PHP,其中一个功能引号字符与字符\自动转义
这里是关闭魔术引号一些解决办法:http://www.php.net/manual/en/security.magicquotes.disabling.php
我觉得这是相同的问题:http://stackoverflow.com/questions/2448332/why -does-GET-在-PHP-错误解码斜线 – 2010-10-25 18:00:11