PHP图像上载文件检查问题

PHP图像上载文件检查问题,php,upload,image,Php,Upload,Image,我有PHP表单,用户可以上传图像。我检查了这个表单中的其他几个问题,比如空字段,每个问题都会得到自己的错误消息。如果存在多个错误,de form不会发送数据,用户会看到错误消息。到目前为止,一切都很好!现在我想在图像不是PNG、JPG或GIF或大于250k时显示一条错误消息。我已经写了一个代码,似乎什么都没做!我可以将整个表单留空,并将.MP3设置为“要上载的文件”,所有错误消息都会出现,但图像中的错误消息除外。怎么了?这是我的密码: $aErrors = array(); $filechec

我有PHP表单,用户可以上传图像。我检查了这个表单中的其他几个问题,比如空字段,每个问题都会得到自己的错误消息。如果存在多个错误,de form不会发送数据,用户会看到错误消息。到目前为止,一切都很好!现在我想在图像不是PNG、JPG或GIF或大于250k时显示一条错误消息。我已经写了一个代码,似乎什么都没做!我可以将整个表单留空,并将.MP3设置为“要上载的文件”,所有错误消息都会出现,但图像中的错误消息除外。怎么了?这是我的密码:

$aErrors = array();

$filecheck = basename($_FILES['bedrijfslogo']['name']);
$ext = strtolower(substr($filecheck, strrpos($filecheck, '.') + 1));

if (!(($ext != "jpg" && $ext != "gif" && $ext != "png") || ($_FILES["bedrijfslogo"]["type"] != "image/jpeg" && $_FILES["bedrijfslogo"]["type"] != "image/gif" && $_FILES["bedrijfslogo"]["type"] != "image/png") ||    ($_FILES["bedrijfslogo"]["size"] > 250000))){

    $aErrors['bedrijfslogo'] = 'Uw bedrijfslogo is te groot of niet het juiste formaat';
  }
以及HTMl表单中的代码:

<tr>
<td class="first">Bedrijfslogo:</td>
<td><input tabindex="8" type="file" name="bedrijfslogo" value="<?php echo isset($_POST['bedrijfslogo'])?$_POST['bedrijfslogo']:""; ?>" class="wizardinput" style="background-color:white;"></td>
</tr>

Bedrijfslogo:

你的逻辑有点混乱

if (!(($ext != "jpg" && $ext != "gif" && $ext != "png") || ($_FILES["bedrijfslogo"]["type"] != "image/jpeg" && $_FILES["bedrijfslogo"]["type"] != "image/gif" && $_FILES["bedrijfslogo"]["type"] != "image/png") ||    ($_FILES["bedrijfslogo"]["size"] > 250000))){
    $aErrors['bedrijfslogo'] = 'Uw bedrijfslogo is te groot of niet het juiste formaat';
}
试着简化它

if (!preg_match("/^jpg|gif|png$/", $ext) || !preg_match("/^image\/(jpeg|gif)$/", $_files["bedrijfslogo"]["type"]) || $_FILES["bedrijfslogo"]["size"] > 250000) {
    //code here
}

你可以发布完整的表单吗?困惑,虽然我在做一个假设,但给出了你的表单字段名,但它不应该是
&&$\u文件[“bedrijfslogo”][“size”]>250000
你的逻辑检查它是否是一个图像或者它是否小于某个大小,这看起来确实很简单。但是,使用您的代码,我总是会收到错误消息,而且当我没有选择任何要上载的文件时?@user1555076从jpg | gif | png中删除括号。为正确性而编辑。@user1555076只是出于好奇,那是什么语言?北欧的东西?只是尝试了更正的代码,仍然显示错误信息的所有时间。包括当我没有选择任何要上传的内容时。我必须说,我觉得你的代码很好?再一次,我也认为我的代码可以做到这一点!你看到的语言是荷兰语,我来自荷兰!希望您有一个解决方案,谢谢。@user1555076我将检查每个单独的逻辑比较,看看哪一个返回了不正确的真/假值。我的正则表达式可能不是100%精确的——在将它们放入答案之前,我对它们进行了简短的测试,但没有进行广泛的测试。顺便说一句,我是1/8的荷兰人(美国人)。很高兴认识一个真正的荷兰人!