具有相关回声的多个If

时间:2013-02-11 21:43:20

标签: php if-statement upload

我是php的新手。我已经搜索了这个问题的解决方案超过1小时但找不到答案。

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

到目前为止

代码:

$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 {}

2 个答案:

答案 0 :(得分:1)

为什么不使用旗帜?

$error1 = 1;
$error2 = 1;

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

如果达到特定计数,请使用错误计数器和die

答案 1 :(得分: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>";
}