我创建了一个小的 PHP 脚本,它在 PHP 5.2.17 的服务器上运行并magic_quotes_gpc
启用了该指令。
我没有对 php.ini 文件的写访问权限,我想从用户输入中删除所有斜杠。
即使该magic_quotes_gpc
指令被关闭(例如将脚本移动到另一台服务器时),这也应该有效。
当用户提交数组时,它也应该递归地工作。
我更喜欢使用内置函数。
<html>
<head>
<title>HP</title>
</head>
<body>
<form method="POST" action="magic.php">
<input type="text" value="te\\"st" name="test1">
<input type="text" value="te\\"st" name="test2[tw"o]">
<input type="submit" value="submit">
</form>
<?php
echo "<pre>";
echo "magic_quotes: ".get_magic_quotes_gpc()."\n";
echo "<hr>test1";
echo "filter_input: ".filter_input(INPUT_POST, "test1")."\n";
echo "POST: ".$_POST['test1']."\n";
echo "<hr>test2 (filter)";
print_r(filter_input_array(INPUT_POST))."\n";
echo "<hr>test2 (post)";
print_r($_POST)."\n";
echo "</pre>";
?>
</body>
</html>
这在我的服务器上给出了以下结果:
magic_quotes: 1
filter_input: te\\"st
POST: te\\\\\"st
test2 (filter)Array
(
[test1] => te\\"st
[test2] => Array
(
[tw\"o] => te\\"st
)
)
test2 (post)Array
(
[test1] => te\\\\\"st
[test2] => Array
(
[tw\"o] => te\\\\\"st
)
)
似乎除了数组键之外,斜线都被删除了。
还是从未添加斜线?(filter_input()
并且filter_input_array()
可能会忽略该magic_quotes_gpc
指令,因为它已被弃用;但我找不到该指令的参考)
删除/不设置斜杠的行为是否filter_input()
依赖filter_input_array()
于系统参数?
我不明白这里的警告。