0

我是 php 新手。我已经为这个问题寻找了一个多小时的解决方案,但找不到答案。

示例情况:检查上传的文件扩展名和大小,并为每个失败(如果有)回显错误(在第一次失败时停止)。

到目前为止的代码:

$allowedfiletypes = array("image/jpg","image/jpeg","image/png");
if((!in_array($filetype, $allowedfiletypes))) {
    echo "Error, disallowed file type.";
} elseif($filesize > 1048576) {
    echo 'Filesize too large';
} else {
    move_uploaded_file($filetmpname, $uploaddir."/".$filename);
    echo 'The file has the following properties:'." ".$filename.", ".$filesize."kb, ".$filetype.".".'<br><br>';
    echo ' The file is stored in'.$uploaddir.$filename;
}

但如果文件大小超过指定限制,这将不起作用。

我该怎么办if() {echo 'error1';} || if {echo 'error2'.} else {}

4

2 回答 2

1

为什么不使用标志?

$error1 = 1;
$error2 = 1;

if($error1 && $error2) { ... }

或者使用错误计数器,die如果它达到特定计数。

于 2013-02-11T21:45:10.557 回答
0

不是 100% 确定你想要什么,但如果你想向用户显示这两个错误,这应该有效:

$allowedfiletypes = array("image/jpg","image/jpeg","image/png");
$fileTypes = true;
$fileSize = true;
if((!in_array($filetype, $allowedfiletypes)))
   $fileTypes = false;

if($filesize > 1048576)
    $fileSize = false;

if ($fileSize && $fileTypes) {
    move_uploaded_file($filetmpname, $uploaddir."/".$filename);
    echo '<p>The file has the following properties:'." ".$filename.", ".$filesize."kb, ".$filetype.".</p>";
    echo '<p>The file is stored in'.$uploaddir.$filename.'</p>';
}
else {
    if (!$fileSize)
        echo '<p>Filesize too large</p>';
    if (!$fileTypes)
        echo "<p>Error, disallowed file type.</p>";
}
于 2013-02-11T21:57:32.667 回答