为什么$ _SESSION包含未修剪的$ _POST?

时间:2014-04-23 20:27:53

标签: 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>");  // 'Bob'

$_SESSION['foo'] = filter_input(INPUT_POST, 'foo', FILTER_SANITIZE_STRING);
print("<pre>".print_r($_SESSION['foo'],true)."</pre>");  // 'Bob     '

1 个答案:

答案 0 :(得分:1)

来自first comment in the manual

  

请注意,此功能不会(或至少似乎没有)根据$ _GET等的当前值进行实际过滤。相反,它似乎根据原始值进行过滤。

修改

您可以在此处将来电添加到trim()

$_SESSION['foo'] = trim(filter_input(INPUT_POST, 'foo', FILTER_SANITIZE_STRING));