简体   繁体   中英

Problem while checking image type and image size

I am uploading images from my admin-dashboard. It is being sent to the imageupload.php page. The code is given below.

The problem is if I upload an image exceeding 3 mb, it is still saying invalid file type. What is the problem in the code? Why is it always showing invalid file type alert only? For right images it is working fine.

ALSO PLEASE SUGGEST ENHANCEMENTS FOR THE CODE. HOW TO MAKE IT BETTER.

<?php
include "dblink.php";
include "session.php";
if (isset($_SESSION['userbu'])) {
    if (isset($_FILES['image'])) {
        $len       = count($_FILES['image']['name']);
        $image     = $_FILES['image'];
        $img_name  = $_FILES['image']['name'][0];
        $img_size  = $_FILES['image']['size'][0];
        $tmp_dir   = $_FILES['image']['tmp_name'][0];
        $type      = $_FILES['image']['type'][0];
        $checktype = 1;
        $checksize = 1;
        for ($i = 0; $i < $len; $i++) {
            if ($_FILES['image']['type'][$i] == "image/jpeg" || $_FILES['image']['type'][$i] == "image/jpg" || $_FILES['image']['type'][$i] == "image/png") {
                if ($_FILES['image']['size'][$i] <= '3145728‬') {
                } else {
                    $checksize = 0;
                    break;
                }
            } else {
                $checktype = 0;
                break;
            }
        }
        if ($checksize == 1 && $checktype == 1) {
            for ($i = 0; $i < $len; $i++) {
                move_uploaded_file($_FILES['image']['tmp_name'][$i], "imagesbu/" . $_FILES['image']['name'][$i]);
            }
            echo '<script language="javascript">';
            echo 'if(alert("Successfully Added")){} ';
            echo 'else{window.location = "carousel.php"}';
            echo '</script>';
        } elseif ($checksize == 0) {
            echo '<script language="javascript">';
            echo 'if(alert("Invalid file size")){} ';
            echo 'else{window.location = "carousel.php"}';
            echo '</script>';
        } elseif ($checktype == 0) {
            echo '<script language="javascript">';
            echo 'if(alert("Invalid file type")){} ';
            echo 'else{window.location = "carousel.php"}';
            echo '</script>';
        } else {
            echo '<script language="javascript">';
            echo 'if(alert("Invalid file type/size")){} ';
            echo 'else{window.location = "carousel.php"}';
            echo '</script>';
        }
    } else {
        header("location:dashboard.php");
    }
} else {
    header("location:adminlogin.html");
}
?> 

About if/else , if any of the top conditions are satisfied, the program will not look for another elseif . So, you can do this to solve your issue:

if($checksize==1 && $checktype==1)
{
    for($i=0;$i<$len;$i++)
    {
        move_uploaded_file($_FILES['image']['tmp_name'][$i],"imagesbu/".$_FILES['image']['name'][$i]);
    }
    echo '<script language="javascript">';
    echo 'if(alert("Successfully Added")){} ';
    echo 'else{window.location = "carousel.php"}';
    echo '</script>';
}
else{
    if($checksize==0)
    {
        echo '<script language="javascript">';
        echo 'if(alert("Invalid file size")){} ';
        echo 'else{window.location = "carousel.php"}';
        echo '</script>';  
    }
    if($checktype==0)
    {
        echo '<script language="javascript">';
        echo 'if(alert("Invalid file type")){} ';
        echo 'else{window.location = "carousel.php"}';
        echo '</script>';
    }
}

About optimizing the code, you can avoid writing same stuffs more than once, like this:

if($checksize==1 && $checktype==1)
{
    for($i=0;$i<$len;$i++)
    {
        move_uploaded_file($_FILES['image']['tmp_name'][$i],"imagesbu/".$_FILES['image']['name'][$i]);
    }
    $msg = "Uploaded successfully";
}
else{
    if($checksize==0 && $checktype==0)
    {
        $msg = "Invalid file type/size";
    }
    elseif($checktype==0)
    {
        $msg = "Invalid file type";
    }else{
        $msg = "Invalid file size";
    }
}
echo '<script language="javascript">';
echo 'alert("'.$msg.'");';
echo 'window.location = "carousel.php";';
echo '</script>';

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM