Php - 错误消息即使在它们不相关时也会显示出来

时间:2016-02-06 19:57:32

标签: php

我正在尝试上传代码而且我无法找出如何使错误显示只有它是真的。因为现在例如如果文件不是图像,则显示所有可能的错误。 "文件不是图像。对不起,你的文件太大了。不过只有JPG,JPEG,PNG&允许使用GIF文件。因此,您的文件未上传。"一切都很好,除了我试着上传不是图像。我希望它只显示错误,而不是所有可能的错误。所以我想它现在只显示只有JPG,JPEG,PNG&允许GIF文件。不要它显示你的文件太大,即使它不是太大。我该怎么办?这是完整的代码:

    <?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {enter code here
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

P.S Im总编码:)

3 个答案:

答案 0 :(得分:0)

当存在许多潜在错误时,这样做的一种方法是使用数组。

$errors = array();

然后您只需将错误分配给数组,例如,

if (file_exists($target_file)) {
  $errors[] = "Sorry, file already exists.";
}

然后您可以以任何您喜欢的方式显示错误。

注意 这假设您的错误处理从一开始就是正确的。从你的文字来看,你并不期待所有的错误。通过每个if语句的if语句来检查它实际上是否有效,例如:如果您上传的文件具有唯一名称,但if (file_exists($target_file))仍然可以作为true,那么请再次查看该段代码。

答案 1 :(得分:0)

搜索您的文件。一切都说回声,删除它;并只留下你想要的值。就像第13行一样,它说

    echo "File is not an image.";

删除该行代码,您将看不到“文件不是图像”。再

答案 2 :(得分:0)

错误是级联的。在第一个错误之后停止错误检查,即..

if ($uploadOk AND file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}

如果返回错误的错误,您可能还需要更改检查错误的顺序