0

我收到此错误:

警告:stristr() 期望参数 1 是字符串,数组在第 385 行的 /nfs/c09/h03/mnt/12345/domains/mydomainname.com/html/inyoni/fabrics.php 中给出

从此代码:

foreach ($_POST as $field => $value) {

    if ($value && (stristr($value,"Content-Type: "))){
    header("Location: error.php");
    exit;
    }

}

我不知道为什么。事实上,我没有看到错误,但我的客户看到了。我的理解是,当表单中包含图像文件时会发生这种情况(但是,这个错误以前没有出现,只是现在才出现)。

该网站托管在 Mediatemple 上,并且已经向客户发送了一条 PHP 通知,说明 PHP5 开始在他们的服务器上全面使用的时间——这是 PHP5 冲突还是什么?

有点困惑 - 任何帮助表示赞赏!

4

3 回答 3

3

错误很明显。意思是第一个参数stristr()必须是字符串。但是,您提供的是一个数组,这就是代码产生错误的原因。要修复它,只需确保您只是检查字符串值。

if (is_string($value))
{
    if (stristr(...))
}
于 2012-06-06T13:34:39.590 回答
2

Well the $value contains an array, not a string. This can happen when you have a form something like this:

<input type="text" name="form[foo]"/>
<input type="text" name="form[bar]"/>

The $_POST['form'] will hold an array of those two variables. Check if something like this occurs.

It can also happen with file uploads, multiple checkboxes, etc.

As Kemal Fadillah suggested, make a simple type check of the $value variable.

于 2012-06-06T13:35:27.460 回答
1

Do a var_dump($value) in the loop. If any of the forms contains an array, such as an uploaded file http://www.php.net/manual/en/features.file-upload.post-method.php or a bunch of checkboxes, then $value would be an array, instead of a string.

于 2012-06-06T13:35:32.893 回答