我收到了这个错误:
警告:stristr()期望参数1为字符串,数组为 /nfs/c09/h03/mnt/12345/domains/mydomainname.com/html/inyoni/fabrics.php 在第385行
来自此代码:
foreach ($_POST as $field => $value) {
if ($value && (stristr($value,"Content-Type: "))){
header("Location: error.php");
exit;
}
}
我不明白为什么。事实上,我没有看到错误,但我的客户端确实如此。我的理解是,当图像文件包含在表单中时会发生这种情况(但是,此错误之前没有出现过,现在才出现)。
该网站托管在Mediatemple上,并向客户发送了一条PHP通知,告知客户关于PHP5在其服务器上全面使用的时间 - 这是PHP5冲突还是什么?
有点疑惑 - 任何帮助表示赞赏!
答案 0 :(得分:3)
错误很清楚。它说stristr()
的第一个参数必须是一个字符串。但是,您提供的是数组,这就是代码产生错误的原因。要修复它,只需确保您只是检查字符串值。
if (is_string($value))
{
if (stristr(...))
}
答案 1 :(得分:2)
$value
包含一个数组,而不是一个字符串。当你有这样的表格时会发生这种情况:
<input type="text" name="form[foo]"/>
<input type="text" name="form[bar]"/>
$_POST['form']
将包含这两个变量的数组。检查是否发生了这样的事情。
文件上传,多个复选框等也可能发生这种情况。
正如Kemal Fadillah建议的那样,对$value
变量进行简单的类型检查。
答案 2 :(得分:1)
在循环中执行var_dump($value)
。如果任何表单包含数组,例如上传的文件http://www.php.net/manual/en/features.file-upload.post-method.php或一堆复选框,则$value
将是一个数组,而不是字符串。