我有以下代码在设置$_POST
值时按预期运行,但是,如果没有设置"Warning: Invalid argument supplied for foreach() in..."
值(首次加载页面时的IE),我得到$_POST
在用户点击提交之前,empty()
始终为空。我尝试过isset()
,count()
和if(isset($_POST['submitbtn'])){
$errors = CheckFormErrors();
if(count($errors) == 0){
$data = CleanFormData();
print_r($data);
}
}
。
function CleanFormData(){
foreach($_POST as $key => $value){
if($key == 'description'){ continue; }
if($key == 'file'){ continue; }
if($key == 'role'){ continue; }
$_POST[$key] = is_array($key) ? $_POST[$key]: strip_tags($_POST[$key]);
}
return $_POST;
}
这是被调用的函数(尚未完成,但它正在工作):
service httpd restart
我认为我可以通过将其置于条件语句中来抑制错误,显然这是不正确的。一点帮助?
答案 0 :(得分:1)
正如评论中已经说明的那样,你必须在调用$_POST
本身(在函数内部)之前检查超全局foreach
是否为空,而不是在函数之外 - 这样你就不会这样做。每次调用此函数时都必须检查!empty($_POST)
。
function CleanFormData() {
if (!empty($_POST)) {
foreach($_POST as $key => $value) {
// Loops here
}
}
return $_POST;
}