6

我有这个代码:

<?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\'
那么我该如何解决呢?

4

5 回答 5

13

添加斜线是因为您magic_quotes_gpc=Onphp.ini. 请注意,此功能已被弃用,您应该在php.ini. 这是以前的安全功能,但您不应该依赖它。而是为自己编写代码来验证所有输入,并在将输入传递给 SQL 查询时使用准备好的语句,或者escapeshellarg()在将输入传递给 shell 脚本时使用。

但是,用于stripslashes()删除斜线:

echo stripslashes($_GET['user']);
于 2013-05-14T15:26:47.377 回答
5

看起来您在 PHP 解释器中设置了魔术引号。它们可以通过 ini 设置关闭。

于 2013-05-14T15:27:08.050 回答
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);
        });

    }

}
于 2013-05-14T15:37:04.270 回答
2
echo stripslashes($_GET['user']);
于 2013-05-14T15:27:51.050 回答
2

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

function remove_magic_quotes($input) {
    if(get_magic_quotes_gpc()) $input= stripslashes($input);
    return $input;
}
于 2013-05-14T15:33:12.987 回答