在这里遇到了一个奇怪的问题,也许一些更为精通的人可以帮助我得出正在进行的事情的结论(已经有一个解决方法,但想知道如何修复这个似乎它可以影响其他事情)
所以我有一行代码可以检测CLI字符串(基于类型[0]),然后继续将CLI参数转换并加载到GET参数中。
parse_str(implode("&", array_slice($payload['args'], 1)), $_GET);
工作正常,您可以通过创建文件并发布类似
的方式对其进行测试php - f test.php -- foo=bar bar=baz
使用上面一行的文件内容只有一个print_r($_GET);
当你尝试使用它作为filter_input我很注意但是无法弄清楚为什么
$filter = filter_input_array(INPUT_GET, [
'email' => FILTER_VALIDATE_EMAIL,
]);
print_r($filter); //empty
对于GET请求来说,试图解决任何事情都是filter_input_array
一般放弃,实例
http://localhost?request=foo
$_GET['email'] = 'Someguy@somplace.com';
//print_r($_GET); // check
print_r(filter_input_array(INPUT_GET, [
'email' => FILTER_VALIDATE_EMAIL,
'request' => FILTER_SANITIZE_ENCODED,
])):
但由于未知原因,它的工作原理是
$filter = filter_var_array($_GET, [
'email' => FILTER_VALIDATE_EMAIL,
]);
对我来说没什么意义=(
我想要相信我们的GET在某种程度上没有登记到全球范围,但我不知道为什么......
我正在为Saucy运行PHP 5.5.8,欢迎输入
答案 0 :(得分:0)
函数filter_input_array()和filter_input()处理实际输入,而不是相应的全局变量。
来自filter_input文档中的注释:
请注意,此函数不会(或至少似乎没有)实际根据$ _GET等的当前值进行过滤。相反,它似乎基于原始值进行过滤。