Php 为什么$\u会话包含未修剪的$\u帖子?
为什么这样不行Php 为什么$\u会话包含未修剪的$\u帖子?,php,session,post,multidimensional-array,trim,Php,Session,Post,Multidimensional Array,Trim,为什么这样不行 session_start(); print("<pre>".print_r($_POST['foo'],true)."</pre>"); // 'Bob ' array_walk_recursive($_POST, function (&$val) { $val = trim($val); }); print("<pre>".print_r($_POST['foo'],true)."</pre>"); //
session_start();
print("<pre>".print_r($_POST['foo'],true)."</pre>"); // 'Bob '
array_walk_recursive($_POST, function (&$val) { $val = trim($val); });
print("<pre>".print_r($_POST['foo'],true)."</pre>"); // 'Bob'
$_SESSION['foo'] = filter_input(INPUT_POST, 'foo', FILTER_SANITIZE_STRING);
print("<pre>".print_r($_SESSION['foo'],true)."</pre>"); // 'Bob '
session_start();
print(“.print_r($_POST['foo'],true)。”;//鲍勃的
数组_walk_recursive($_POST,function(&$val){$val=trim($val);});
print(“.print_r($_POST['foo'],true)。”;//鲍勃的
$\u会话['foo']=过滤器输入(输入\u POST,'foo',过滤器\u清理\u字符串);
打印(“.print_r($_SESSION['foo'],true)。”);//鲍勃的
来自:
请注意,此函数实际上并没有(或至少似乎没有)根据当前的$u GET等值进行过滤。相反,它似乎是根据原始值进行过滤
编辑
在这里,您可以将调用添加到trim()
:
FILTER\u SANITIZE\u STRING
不修剪空白字符:去除标记,可以选择去除或编码特殊字符。
以及为什么从$\u POST
切换到INPUT\u POST
?这种不一致性带来了问题。我怀疑filter\u input()。也就是说,更改$\u POST
的内容不会对筛选输入()的行为产生任何影响@johncode是的,但是我在通过筛选输入()
之前已经修剪了$\u POST。因此我不应该修剪$\u POST
,而应该修剪$\u会话
?只需将它环绕在对筛选输入()的调用中即可()
。请参阅我的更新答案。我有很多变量。在所有清理之后,执行数组\u walk\u递归($\u会话,函数(&$val){$val=trim($val);});
是否有问题?
$_SESSION['foo'] = trim(filter_input(INPUT_POST, 'foo', FILTER_SANITIZE_STRING));