为什么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\ 

为什么反斜线呢?

+0

我觉得这是相同的问题:http://stackoverflow.com/questions/2448332/why -does-GET-在-PHP-错误解码斜线 – 2010-10-25 18:00:11

当您删除斜杠它不添加它们,当启用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

优雅的武器更... 文明年龄。

你可能有坏magic quotes打开。如果是这样的话,you should simply disable them from php.ini

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

魔术引号是输入数据自动地逃到PHP脚本的过程。根据需要,最好使用魔术引号进行编码,并在运行时转义数据。

当打开时,所有的'(单引号),“(双引号),\(反斜线)和NULL字符转义成自动反斜杠。

总之,魔术引号是PHP,其中一个功能引号字符与字符\自动转义

这里是关闭魔术引号一些解决办法:http://www.php.net/manual/en/security.magicquotes.disabling.php