我有这段代码:
<?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\'
那么我该如何解决?
答案 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;
}