gpt4 book ai didi

php - filter_input() 何时删除 POST 变量的斜线?

转载 作者:行者123 更新时间:2023-12-04 05:55:52 25 4
gpt4 key购买 nike

我创建了一个小的 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\\&quot;st" name="test1">
<input type="text" value="te\\&quot;st" name="test2[tw&quot;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()以某种方式依赖于系统参数?
我不明白警告 here .

最佳答案

我在官方文档中没有找到它,但是 filter_input()函数对原始数据进行操作,不受 magic_quotes 的影响设置。 sanitizer 过滤器,FILTER_SANITIZE_MAGIC_QUOTES ,如果你需要的话,会把它们放进去。

这对我个人来说是一个福音,因为我正在使用具有 magic_quotes 的遗留系统。打开。通过使用 filter_input()函数我可以使用这些值,而无需在将它们绑定(bind)到 PDO 之前去除斜杠.

这些文章谈论它:
http://www.sitepoint.com/forums/showthread.php?590848-Filter_input-magic-quotes
https://weston.ruter.net/2013/10/22/revelations-about-filter_input/
http://php.net/manual/en/function.filter-input.php#99124

关于php - filter_input() 何时删除 POST 变量的斜线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com