$ _POST和$ _GET将quote(')转换为反斜杠+引号(\')

时间:2013-05-14 15:24:18

标签: php html post get

我有这段代码:

<?php  
echo $_GET['user'];
?>

<html >
<head>


</head>
<body>
<form method = "GET"  action="file.php">
    <input type = "text" name = "user"><br> 
    <input type = "submit" value ="submit"><br>
</form>
</body>
</html>  

当我在文本框中输入'时,会打印出\'而不是'
例如,如果我输入'hello',则会打印出\'hello\' 那么我该如何解决?

5 个答案:

答案 0 :(得分:13)

添加了斜杠,因为magic_quotes_gpc=On中有php.ini。请注意,此功能已被删除,您应该在php.ini中将其关闭。这是以前的安全功能,但你不应该依赖它。相反,为自己编写代码所有输入并在将输入传递给SQL查询时使用预准备语句,或者如果将输入传递给shell脚本则使用escapeshellarg()

但是,使用stripslashes()删除斜杠:

echo stripslashes($_GET['user']);

答案 1 :(得分:5)

看起来你的PHP解释器中设置了magic quotes。它们可以通过ini设置关闭。

答案 2 :(得分:3)

您应该首先调用此功能 无论php.ini设置如何,您都不必再关心反斜杠了。

function gpc_clean() {

    if (get_magic_quotes_gpc()) {

        $arr = array();
        if (isset($_GET))    $arr[] =& $_GET;
        if (isset($_POST))   $arr[] =& $_POST;
        if (isset($_COOKIE)) $arr[] =& $_COOKIE;
        array_walk_recursive($arr, function (&$v) {
            $v = stripslashes($v);
        });

    }

}

答案 3 :(得分:2)

echo stripslashes($_GET['user']);

答案 4 :(得分:2)

无论该功能是打开还是关闭,都可以使用此代码使其正常工作:

function remove_magic_quotes($input) {
    if(get_magic_quotes_gpc()) $input= stripslashes($input);
    return $input;
}