Проблема при проверке типа и размера изображения - PullRequest
0 голосов
/ 08 июля 2019

Я загружаю изображения с моей админ-панели.Он отправляется на страницу imageupload.php.Код приведен ниже.

Проблема в том, что если я загружаю изображение размером более 3 МБ, оно по-прежнему говорит о неверном типе файла.В чем проблема в коде?Почему всегда отображается только предупреждение о недопустимом типе файла?Для правильных изображений это работает отлично.

ТАКЖЕ ПОЖАЛУЙСТА, ПРЕДЛАГАЙТЕ УЛУЧШЕНИЯ ДЛЯ КОДА.КАК СДЕЛАТЬ ЭТО ЛУЧШЕ.

<?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");
}
?> 

1 Ответ

1 голос
/ 08 июля 2019

О if/else, если выполняется какое-либо из верхних условий, программа не будет искать другое elseif.Таким образом, вы можете сделать это, чтобы решить вашу проблему:

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>';
    }
}

Об оптимизации кода вы можете избежать написания одних и тех же вещей более одного раза, например:

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>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...