Много интересен проблем с качване на файлове...

AceXe

Registered
Проблемът е много странен. Прегледах го 25 пъти, но пак не мога да разбера откъде идва проблема.

Ако кача картинка във формат png или jpg всичко е точно. Ако кача файл във формат различен от png/jpg ми извежда съобщението, че само png и jpg са позволени. Ако обаче не задам файл и формата е празна пак ми извежда това съобщение, вместо да въведе $image = "images/default.png";. За всеки случай ще предоставя и кода във формата.
HTML
Код:
<form action="?page=upload" enctype="multipart/form-data" method="post">
    
 <input type="file" name="file" style="width: 300px;" /></form>


PHP
Код:
if($_FILES['file']) {

if(((end(explode(".", $_FILES['file']['name'])) == "png"))
&& ($_FILES["file"]["size"] < 2000000)) {

$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefrompng($uploadedfile);
list($width,$height,$type)=getimagesize($uploadedfile);
$nwidth = 200;
$nheight = 200;
$tmp=imagecreatetruecolor($nwidth,$nheight);
imagecopyresampled($tmp,$src,0,0,0,0,$nwidth,$nheight,$width,$height);
$filename = "uploads/images1/". $_FILES['file']['name'];
imagejpeg($tmp,$filename);
imagedestroy($src);
imagedestroy($tmp);
$image = "uploads/images1/".$_FILES['file']['name']; } 

else if(((end(explode(".", $_FILES['file']['name'])) == "jpg"))
&& ($_FILES["file"]["size"] < 2000000)) {

$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);
list($width,$height)=getimagesize($uploadedfile);
$nwidth = 200;
$nheight = 200;
$tmp=imagecreatetruecolor($nwidth,$nheight);
imagecopyresampled($tmp,$src,0,0,0,0,$nwidth,$nheight,$width,$height);
$filename = "uploads/images1/". $_FILES['file']['name'];
imagejpeg($tmp,$filename);
imagedestroy($src);
imagedestroy($tmp);
$image = "uploads/images1/".$_FILES['file']['name']; 

} else {

echo '<div class="no_mess">Само <b>.jpg</b> и <b>.png</b> формати да разрешени.'; }

} else { 

$image = "images/default.png"; }

Благодаря за съдействието
 
AceXe каза:
if($_FILES['file']) {

if(((end(explode(".", $_FILES['file']['name'])) == "png"))
&& ($_FILES["file"]["size"] < 2000000)) {

$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefrompng($uploadedfile);
list($width,$height,$type)=getimagesize($uploadedfile);
$nwidth = 200;
$nheight = 200;
$tmp=imagecreatetruecolor($nwidth,$nheight);
imagecopyresampled($tmp,$src,0,0,0,0,$nwidth,$nheight,$width,$height);
$filename = "uploads/images1/". $_FILES['file']['name'];
imagejpeg($tmp,$filename);
imagedestroy($src);
imagedestroy($tmp);
$image = "uploads/images1/".$_FILES['file']['name']; }

else if(((end(explode(".", $_FILES['file']['name'])) == "jpg"))
&& ($_FILES["file"]["size"] < 2000000)) {

$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);
list($width,$height)=getimagesize($uploadedfile);
$nwidth = 200;
$nheight = 200;
$tmp=imagecreatetruecolor($nwidth,$nheight);
imagecopyresampled($tmp,$src,0,0,0,0,$nwidth,$nheight,$width,$height);
$filename = "uploads/images1/". $_FILES['file']['name'];
imagejpeg($tmp,$filename);
imagedestroy($src);
imagedestroy($tmp);
$image = "uploads/images1/".$_FILES['file']['name'];

}
else if ($_FILES['file']['name'] == "") {$image = "images/default.png"; }

else {

echo '<div class="no_mess">Само <b>.jpg</b> и <b>.png</b> формати да разрешени.'; }

} else {

$image = "images/default.png"; }[
 
Сега пък стана обратното. Ако полето не е попълно извежда Не сте попълнили полето !, но го извежда и ако съм качил файл във формат различен от png/jpg.
 
Моя грешка : ) Полето не е $_POST , а е $_FILES :)
Ще си поправя кода :>
 
Пробвах го и със $_FILES и се получи проблема, който описах в първия си пост. :(
 
Ааа перфектно е сега. То явно, въпреки че не качваш файл пак изпраща някаква информация и затова empty не става. Мерси много :)
 

Back
Горе