0

私はこの条件を使用していますが、常にfalseであるため、機能していません。つまり、条件を満たすファイルタイプがないため、構文にエラーがあるはずですが、理解できません。

if (!($_FILES["uploaded"]["type"] == "video/mp4")
&& (!$_FILES["uploaded"]["type"] == "video/flv")
&& (!$_FILES["uploaded"]["type"] == "video/webm" )
&& (!$_FILES["uploaded"]["type"] == "video/ogg" ))

{
   $message="not an accepted file format";
}    
4

3 に答える 3

5
if ( !($_FILES["uploaded"]["type"] == "video/mp4"
       || $_FILES["uploaded"]["type"] == "video/flv"
       || $_FILES["uploaded"]["type"] == "video/webm"
       || $_FILES["uploaded"]["type"] == "video/ogg") )
{
   $message="not an accepted file format";
} 

有効とはこれらのタイプのいずれかを意味すると思いますので、(を使用してor)これらのいずれかをチェックし、それを否定します。

于 2012-12-20T01:21:49.397 に答える
5

の一般的なケースin_array

$type          = $_FILES["uploaded"]["type"];
$allowedTypes  = ["video/mp4", "video/flv", "video/webm", "video/ogg"];
$isRefusedType = !in_array($type, $allowedTypes);
if ($isRefusedType) {
    $message = "not an accepted file format";
}

または反転した配列issetに対して:

$type          = $_FILES["uploaded"]["type"];
$allowedTypes  = array_flip(["video/mp4", "video/flv", "video/webm", "video/ogg"]);
$isRefusedType = !isset($allowedTypes[$type]);
if ($isRefusedType) {
    $message = "not an accepted file format";
}
于 2012-12-20T01:31:15.337 に答える
2

垂直スケールでは長くなりますが、私の意見ではより読みやすくなっています。

switch ($_FILES["uploaded"]["type"]) {
    case "video/webm":
    case "video/mp4":
    case "video/flv":
    case "video/ogg":
        $message = "Okie dokie";
        break;
    default:
        $message = "Invalid format";
}
于 2012-12-20T01:31:04.293 に答える