Странна грешка при Ъплоуд

KaRo

Registered
Ето вижте сега какав е боба при мен. $avatar = $_FILES['avatar'] (Пробвал съм и $_POST).. И вижте..

if(empty ($avatar)) {
$_FILES['avatar'] = "avatars/noavatar.png";
}
else {
$tmp_name = $_FILES['avatar']['tmp_name'];
$name = $_FILES['avatar']['name'];
$format = end(explode(".", $name));
if($format != "png" && $format != "gif" && $format != "jpeg" && $format != "jpg") {
echo "Позволени формати: PNG, GIF, JPEG";
}
else {
$location = "avatars/$name";
$avatar = $location;
move_uploaded_file($tmp_name, $location);
}
}

Когато потребителят не е въвел аватар би трябвало на $avatar да присвоява стойноста "avatars/noavatar.png" и да продължи с останалата част от кода без да го интересува else, но когато не въведа аватар, пак ми вади тъпата грешка, че позволените формати са еди кво си, еди кво си, но като въведа аватар всичко си е точно.

Моля помогнете, как да пропуска това тъпо еlse, когато файл инпута е празен ? Пробвах и if($avatar == null) { , без резултат.
 
$_FILES['avatar'] е масив. Ти му присвояваш низ... Направи си отделна променлива, която ако има аватар да е = $_FILES['avatar']['name'], а ако няма да е "noavatar...". Но дори и така като цяло начина не е много удачен. :)
 
Такам, пробвах не става, пък и според мен точно в този случай няма значение с какво е изразено, а според теб кой е по-удачния начин?
 
Има значение с какво е изразено. Присвояваш avatars/noavatar.png на $_FILES['avatar']. После ако търсиш $_FILES['avatar']['name'], ще ти връща само първата буква от масива, т.е. a.

Но както и да е - ако ти прескача в else значи мисли, че $avatar не е празно. Я си изведи print $avatar; в else {} и виж какво ще изведе.
 
idevbg каза:
Но както и да е - ако ти прескача в else значи мисли, че $avatar не е празно. Я си изведи print $avatar; в else {} и виж какво ще изведе.
 

Back
Горе