Загрузка аватаров по умолчанию с переполнением стека

Он продолжает выдавать мне одно и то же сообщение об ошибке, когда я не хочу загружать аватар и сохраняю значение по умолчанию «avatar1.jpg». «Неверный тип файла!» Что может быть не так?
Когда я загружаю аватар, он работает нормально.

Этот код является функцией, которая остается в functions.php

public function uploadAvatar(){
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["avatar"]["name"]);
$extension = end($temp);
if ((($_FILES["avatar"]["type"] == "image/gif")
|| ($_FILES["avatar"]["type"] == "image/jpeg")
|| ($_FILES["avatar"]["type"] == "image/jpg")
|| ($_FILES["avatar"]["type"] == "image/pjpeg")
|| ($_FILES["avatar"]["type"] == "image/x-png")
|| ($_FILES["avatar"]["type"] == "image/png"))
&& ($_FILES["avatar"]["size"] < 1000000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["avatar"]["error"] > 0) {
redirect('register.php', $_FILES["avatar"]["error"], 'error');
} else {
if (file_exists("images/avatars/" . $_FILES["avatar"]["name"])) {
redirect('register.php', 'File already exists', 'error');
} else {
move_uploaded_file($_FILES["avatar"]["tmp_name"],
"images/avatars/" . $_FILES["avatar"]["name"]);

return true;
}
}

}

else {
redirect('register.php', 'Invalid File Type!', 'error');
}
}

Этот код получает функцию «if ($ user-> uploadAvatar ()) {…}» для установки изображения по умолчанию, если ничего не загружено.

if(isset($_POST['register-input'])){
//Create Data Array
$data = array();
$data['name'] = $_POST['name'];
$data['email'] = $_POST['email'];
$data['username'] = $_POST['username'];
$data['password'] = md5($_POST['password']);
$data['password2'] = md5($_POST['password2']);
$data['about'] = $_POST['about'];
$data['last_activity'] = date("Y-m-d H:i:s");

//Required Fields
$field_array = array('name','email','username','password','password2');

if($validate->isRequired($field_array)){
if($validate->isValidEmail($data['email'])){
if($validate->passwordsMatch($data['password'],$data['password2'])){
//Upload Avatar Image
if($user->uploadAvatar()){
$data['avatar'] = $_FILES["avatar"]["name"];
}   else{

$data['avatar'] = 'avatar1.jpg';
}

//Register User
if($user->register($data)){
redirect('index.php', 'You are registered and can now log in', 'success');
} else {
redirect('index.php', 'Something went wrong with registration', 'error');
}
} else {
redirect('register.php', 'Your passwords did not match', 'error');
}
} else {
redirect('register.php', 'Please use a valid email address', 'error');
}
} else {
redirect('register.php', 'Please fill in all required fields', 'error');
}

}

0

Решение

Если вы не загружаете avatar файл, чем при проверке на $_FILES["avatar"]["type"] вы всегда будете получать ложные null == "image/gif" || null == "image/jpeg"...,

Сначала проверьте, есть ли у вас этот файл, выполнив if (!empty($_FILES['avatar']))


Примечание Вы можете изменить этот код:

($_FILES["avatar"]["type"] == "image/gif")
|| ($_FILES["avatar"]["type"] == "image/jpeg")
|| ($_FILES["avatar"]["type"] == "image/jpg")
|| ($_FILES["avatar"]["type"] == "image/pjpeg")
|| ($_FILES["avatar"]["type"] == "image/x-png")
|| ($_FILES["avatar"]["type"] == "image/png")

в

in_array($FILES['avatar']['type'], ["image/gif", "image/jpeg", "image/pjpeg", "image/x-png", "image/png"])
1

Другие решения

ты можешь использовать :

                    if($user->uploadAvatar()){
$data['avatar'] = $_FILES["avatar"]["name"];
}   else{

$file =      'avatar1.jpg';

// Open the file to get existing content
$data = file_get_contents($file);

// New file
$new = 'new_name.jpg';

// Write the contents back to a new file
file_put_contents($new, $data);
}
0

На вершине uploadAvatarВам нужно проверить, есть ли файл для обработки, прежде чем начать работу. Запустите функцию с этими строками

if(empty($_FILES['avatar']) ||
!file_exists($_FILES['avatar']['tmp_name']) ||
!is_uploaded_file($_FILES['avatar']['tmp_name'])
) return false;
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector