为什么in_array()总是返回false? PHP

时间:2016-11-29 16:41:40

标签: php forms

在这里仍然掌握着PHP。我已经看到了类似的其他问题,但我无法弄清楚为什么我的回归是虚假的。我有一个表单,通过电子邮件发送文本和附加文件。表单按预期发送文件,但一旦我开始尝试验证文件类型,我开始只收到错误。为什么我的验证总是返回false?

SELECT Package_Code, Description, Duration, Site_Code
FROM tbl_Holiday_Details
INNER JOIN tbl_Site_Visted
ON tbl_Holiday_Details.Package_Code = tbl_Site_Visted.Package_Code
INNER JOIN tbl_Site_Visted
ON tbl_Site_Details.Site_Code = tbl_Site_Visted.Site_Code

}

1 个答案:

答案 0 :(得分:2)

当您使用PHP更新多个文件时,每个文件的mimetype都会进入$_FILES['userfile']['type'][$i]变量。

在您的代码中,检查$_FILES['userfile']['type']类型中是否存在$allowed(数组)的值(并且这始终为false)。

您可以将代码更改为:

for($i=0; $i<$total; $i++) {
    ....
    $file_type = $_FILES['upload']['type'][$i]; //returns the mimetype
    ....
    if(!in_array($file_type, $allowed)) {
        $error = True;
        echo "Error: Only jpg, gif, png, and pdf files are allowed.<br />";
    }
    ....
}