0

ユーザーが画像をアップロードできる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>

何が悪いの?よろしくお願いします!

4

1 に答える 1

2

あなたの論理は少し混乱しています

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
}
于 2012-07-26T19:33:43.897 に答える