我在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
答案 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){