php文件上传的问题

时间:2017-06-09 22:33:44

标签: php

我在php文件上传方面遇到了一个非常烦人的问题。 albumcover文件是可选的,所以我已经执行了一个控件来检查状态是否为4.问题是,如果我尝试上传最多5首歌曲,那么当我尝试使用6,7时,脚本运行正常,或者更多,结果是这个消息:

" Formato file non permesso,sono ammessi solo files con estensione .jpeg o .jpg o .png"

但如果没有上传专辑封面,则剧本不应该进入if正文的真实部分。我不知道问题是什么。这是我的剧本:

<?php
session_start();

$nv = array("'","--");

$email = $_SESSION['email'];
$nomealbum = str_replace ($nv, '', $_POST['albumname']);
$desc = str_replace ($nv, '', $_POST['albumdescription']);
$genere = $_POST['genere'];
$singolo = $_POST['single'];

$conn = mysqli_connect('localhost','root', '') 
    or die("Cannot connect to the dbms");

$q1 = mysqli_query($conn, "use my_alessiocorvagliatsn") 
    or die ("Cannot choose the tsn_db");

if($_FILES['albumcover']['error'] != '4'){
    if($_FILES['albumcover']['error'] == 0){

    if($_FILES['albumcover']['type'] != "image/jpeg" || $_FILES['albumcover']['type'] != "image/png")
        die ("Formato file non permesso, sono ammessi solo files con estensione .jpeg o .jpg o .png");

    if($_FILES['albumcover']['size'] > 2097152)
        die ("Le dimensioni del tuo file superano i 2 MB");

    $img = $_FILES['albumcover']['tmp_name'];

    $prop = getimagesize($img);

    $larghezza = $prop[0];
    $altezza = $prop[1];

    if (($larghezza > 1600) || ($altezza > 1600) || ($larghezza != $altezza))
        die ("Le dimensioni del tuo file non sono consentite, caricare un immagine quadrata di massimo 1600x1600 pixel");

    for ($x=1; $x<=60; $x++){
        if ($x % 2){
            $str = $str . chr(rand(97,122));
        }
        else{
            $str = $str . rand(0,9);
        }
    }

    copy($_FILES['albumcover']['tmp_name'], "../imgalbum/".$str.$_FILES['albumcover']['name'])
        or die ("Impossibile trasferire il file immagine");

    $link = "../imgalbum/".$str.$_FILES['albumcover']['name'];
    }
}
else{
    $link = "../imgalbum/emptycover.png";
}

$q2 = mysqli_query($conn, "insert into tsn_albums 
(albumtitle, albumdescription, coverimglink, publishingdate, single, email) values
('$nomealbum', '$desc', '$link', now(), '$singolo', '$email')")
    or die ("Impossibile caricare album");

$q3 = mysqli_query($conn, "Select albumid from tsn_albums where publishingdate = CURDATE() and email = '$email'");
$a1 = mysqli_fetch_assoc($q3);
$albumid = $a1['albumid'];

if($singolo == 1){
    $nome = str_replace ($nv, '', $_POST['singolonome']);
    if($_FILES['singolocanzone']['error'] == 0){

        if($_FILES['singolocanzone']['type'] != "audio/mp3")
            die ("Formato file non permesso, sono ammessi solo files con estensione .mp3");

        if($_FILES['singolocanzone']['size'] > 10485760)
            die ("Le dimensioni del tuo file superano i 10 MB");

        for ($x=1; $x<=60; $x++){
            if ($x % 2){
                $str1 = $str1 . chr(rand(97,122));
            }
            else{
                $str1 = $str1 . rand(0,9);
            }
        }

        copy($_FILES['singolocanzone']['tmp_name'], "../songs/".$str1.$_FILES['singolocanzone']['name'])
            or die ("Impossibile trasferire il file audio");

         $linktra = "../songs/".$str1.$_FILES['singolocanzone']['name'];

         $q4 = mysqli_query($conn, "INSERT INTO tsn_tracks 
                (tracktitle, reproductions, genre, tracklink, albumid) values
                ('$nome', 0, '$genere', '$linktra', '$albumid')")
                or die("Impossibile caricare il singolo");

         echo "<i style='font-size: 12rem; margin-left: 44%; margin-top: 5%;' class='large material-icons'>done</i>
            <h3 style='text-align: center; margin-top: 5%'>Pubblicazione del singolo effettuata correttamente!</h3>";
    }
}

if($singolo == 0){
    for($z=0; $z<30; $z++){
        if(isset($_POST[$z]) && $_FILES['canzoni']['error'][$z] == '0'){
            $traccia = $_POST[$z];
            if($_FILES['canzoni']['error'][$z] == 0){

                if($_FILES['canzoni']['type'][$z] != "audio/mp3")
                    die ("Formato file non permesso, sono ammessi solo files con estensione .mp3");

                if($_FILES['canzoni']['size'][$z] > 10485760)
                    die ("Le dimensioni del tuo file superano i 10 MB");

                for ($x=1; $x<=60; $x++){
                    if ($x % 2){
                        $str2 = $str2 . chr(rand(97,122));
                    }
                    else{
                        $str2 = $str2 . rand(0,9);
                    }
                }

                copy($_FILES['canzoni']['tmp_name'][$z], "../songs/".$str2.$_FILES['canzoni']['name'][$z])
                    or die ("Impossibile trasferire il file audio");

                $linktraccia = "../songs/".$str2.$_FILES['canzoni']['name'][$z];

                $str2 = "";

                $q5 = mysqli_query($conn, "INSERT INTO tsn_tracks 
                    (tracktitle, reproductions, genre, tracklink, albumid) values
                    ('$traccia', 0, '$genere', '$linktraccia', '$albumid')")
                     or die("Impossibile caricare la traccia dell'album");
            }
        }
    }
    echo "<i style='font-size: 12rem; margin-left: 44%; margin-top: 5%;' class='large material-icons'>done</i>
    <h3 style='text-align: center; margin-top: 5%'>Pubblicazione dell'album effettuata correttamente!</h3>";
}  
?>

这是我的表单:https://drive.google.com/open?id=0B6t_u06RYI66Q2xrcTUxbC1sM3c

1 个答案:

答案 0 :(得分:0)

由于$ _FILES [&#39; albumcover&#39;] [&#39;错误&#39;]未定义(请检查您的日志),因此loose comparisons中的内容为false。 所以虚假不是&#39; 4&#39;然后false等于0.这就是你到达死亡的原因。

尝试严格的比较:

if($_FILES['albumcover']['error'] !== UPLOAD_ERR_NO_FILE){
    if($_FILES['albumcover']['error'] === UPLOAD_ERR_OK){