Когда я отправляю новое имя, а не новый аватар, я получаю следующее сообщение об ошибке аватара Please upload a .gif, .jpeg, .jpg or .png image!
. Я хочу, чтобы иметь возможность отправлять новое имя, только не загружая новый аватар каждый раз, когда я отправляю форму без получения сообщения об ошибке аватара Please upload a .gif, .jpeg, .jpg or .png image!
может кто-нибудь помочь мне исправить эту проблему?PHP и MySQL отправить сообщение об ошибке
Адрес: PHP-код.
if (isset($_POST['submitted'])) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT users.*
FROM users
WHERE user_id=3");
$first_name = mysqli_real_escape_string($mysqli, htmlentities(strip_tags($_POST['first_name'])));
$user_id = '3';
if(isset($_FILES["avatar"]["name"]) && $_FILES['avatar']['size'] <= 5242880) {
if($_FILES["avatar"]["type"] == "image/gif" || $_FILES["avatar"]["type"] == "image/jpeg" || $_FILES["avatar"]["type"] == "image/jpg" || $_FILES["avatar"]["type"] == "image/png" || $_FILES["avatar"]["type"] == "image/pjpeg") {
if (file_exists("../members/" . $user_id . "/images/" . $_FILES["avatar"]["name"])) {
echo '<p class="error">' . mysqli_real_escape_string($mysqli, htmlentities(strip_tags(basename($_FILES["avatar"]["name"])))) . ' already exists! ';
} else if($_FILES["avatar"]["name"] == TRUE) {
move_uploaded_file($_FILES["avatar"]["tmp_name"],
"../members/" . $user_id . "/images/" . mysqli_real_escape_string($mysqli, htmlentities(strip_tags(basename($_FILES["avatar"]["name"])))));
$avatar = mysqli_real_escape_string($mysqli, htmlentities(strip_tags(basename($_FILES["avatar"]["name"]))));
}
} else if($_FILES["avatar"]["type"] != "image/gif" || $_FILES["avatar"]["type"] != "image/jpeg" || $_FILES["avatar"]["type"] != "image/jpg" || $_FILES["avatar"]["type"] != "image/png" || $_FILES["avatar"]["type"] != "image/pjpeg") {
echo '<p class="error">Please upload a .gif, .jpeg, .jpg or .png image!</p>';
}
} else if($_FILES['avatar']['size'] >= 5242880) {
echo '<p class="error">Please upload a smaller pic!</p>';
} else if($_FILES["avatar"]["name"] == NULL) {
$avatar = NULL;
}
if(isset($_FILES["avatar"]["name"]) && $_FILES['avatar']['size'] <= 5242880) {
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, first_name, avatar)
VALUES ('$user_id', '$first_name', '$avatar')");
}
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE users
SET first_name = '$first_name', avatar = '$avatar'
WHERE user_id = '$user_id'");
echo '<p class="changes-saved">Your changes have been saved!</p>';
}
if (!$dbc) {
print mysqli_error($mysqli);
return;
}
}
}
челобитной e знайте о следующем: свойство 'type' информации в' $ _FILES' не является надежным способом тестирования типа mime. Он может быть подделан. Вы бы лучше использовали FileInfo http://www.php.net/manual/en/book.fileinfo.php. Кроме того, ваши SQL-запросы являются общедоступными для SQL-инъекций http://en.wikipedia.org/wiki/SQL_injection. Вы должны рассмотреть возможность использования подготовленных инструкций. –
Извините, я упустил вызовы 'mysqli_real_escape_string()'. Поэтому не обращайте внимания на материал SQL-инъекции. –