Переименовать изображение при загрузке на сервер сайта

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
0
Реакции
-1
Добрый вечер, задача такая, при загрузки изображения файл должен переименоваться в имя которое я мог задать, в моем случае я буду использовать "$_SESSION['logged_user']->id" ID пользователя который будет загружать изображение, это и будет новым именем изображения.
Вот мой код, помогите правильно дописать данную задачу. Сам плохо знаю php, по этому прошу помощи. Если мой код снизу не подходит для данной задачи, укажите верный))
PHP:
<?php
ini_set('upload_max_filesize', '1M'); //ограничение в 1 мб
if ($_SERVER['REQUEST_METHOD'] == "POST" ) {
if ($_FILES['inputfile']['error'] == UPLOAD_ERR_OK && $_FILES['inputfile']['type'] == 'image/jpeg') { //проверка на наличие ошибок
$destiation_dir = dirname(__FILE__) . '/' . $_FILES['inputfile']['name']; // директория для размещения файла
if (move_uploaded_file($_FILES['inputfile']['tmp_name'], $destiation_dir)) { //перемещение в желаемую директорию
echo 'Спасибо, файл успешно загружен!'; //оповещаем пользователя об успешной загрузке файла
 
} else {
echo 'Файл не загружен';
}
} else {
switch ($_FILES['inputfile']['error']) {
case UPLOAD_ERR_FORM_SIZE:
case UPLOAD_ERR_INI_SIZE:
echo 'Размер файла превышает';
brake;
case UPLOAD_ERR_NO_FILE:
echo 'Не выбрано';
break;
default:
echo 'Ошибка, не верный файл';
}
}
}
?>
<html>
<head>
<title>Загрузите изображение</title>
</head>
<body>
<h1>Загрузка картинки</h1>
<form method="post" action="secure.php" enctype="multipart/form-data">
<label for="inputfile">Загрузите изображение</label>
<input type="file" id="inputfile" name="inputfile"></br>
<input type="submit" value="Загрузить">
</form>
</body>
</html>
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
PHP:
$destiation_dir = dirname(__FILE__) . '/' . $_FILES['inputfile']['name']; // директория для размещения файла
где $_FILES['inputfile']['name'] заменить на необходимое имя
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
$_FILES['inputfile']['type'] == 'image/jpeg'
Бесполезная проверка
7 Апр 2018
$_FILES['inputfile']['name']
Никогда не давайте имя файла то, которое пришло от пользователя. Либо очищайте его перед использованием. Подсказка: ../config.php
 
Последнее редактирование:
Сообщения
0
Реакции
-1
fantom,
Бесполезная проверка
7 Апр 2018

Никогда не давайте имя файла то, которое пришло от пользователя. Либо очищайте его перед использованием. Подчказка: ../config.php
1) А Какая проверка будет полезной ? И как верно записать
2) у меня нет файла config.php, сайт пишу с нуля. Не совсем понял почему нельзя принимать имя которое пришло от пользователя.
 
Сообщения
0
Реакции
-1
потому что могут залить исполняемый файл и ломануть
Каким образом нужно переписать ниже указанный код проверки что-бы не ломанули ?
PHP:
<?php
ini_set('upload_max_filesize', '1M'); //ограничение в 1 мб
if ($_SERVER['REQUEST_METHOD'] == "POST" ) {
if ($_FILES['inputfile']['error'] == UPLOAD_ERR_OK && $_FILES['inputfile']['type'] == 'image/jpeg') { //проверка на наличие ошибок
$destiation_dir = dirname(__FILE__) . '/image/avatar/'.$_SESSION['logged_user']->id.'.'.jpg; // директория для размещения файла и замена имени файла на id авторизованного пользователя
if (move_uploaded_file($_FILES['inputfile']['tmp_name'], $destiation_dir)) { //перемещение в желаемую директорию
echo '<div style="color:#0C0">Спасибо, файл успешно загружен!</div>'; //оповещаем пользователя об успешной загрузке файла

} else {
echo '<div style="color:red">Файл не загружен</div>';
}
} else {
switch ($_FILES['inputfile']['error']) {
case UPLOAD_ERR_FORM_SIZE:
case UPLOAD_ERR_INI_SIZE:
echo 'Размер файла превышает';
brake;
case UPLOAD_ERR_NO_FILE:
echo 'Не выбрано';
break;
default:
echo 'Ошибка, не верный файл';
}
}
}
?>


<form method="post" action="id.php" enctype="multipart/form-data">
<label for="inputfile">Загрузите изображение</label>
<p>Файл не более 1 мб<p>
<input type="file" id="inputfile" name="inputfile"></br>
<input type="submit" value="Загрузить">
</form>
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу