• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Запись файла в папку средствами Php

  • Автор темы realmadrid
  • Дата начала
R

realmadrid

Здравствуйте!
Сразу к делу: в своей программе я сохраняю нужные мне файлы в папке. Так вот, когда я пишу:

if (!empty($_FILES['image']['tmp_name']))
{
$ext = strrchr($_FILES['image']['name'], ".");
$image = "../files/".date("YmdHis",time())."$ext";
copy($_FILES['image']['tmp_name'], "../".$image);
}

запись в файл не происходит. Зато когда я убираю if (!empty($_FILES['image']['tmp_name'])) - всё превосходно исполняется. Пробовал заменить empty на is_uploaded_file - никакого эффекта. Может быть такая проверка и не нужна, но мне приспичило. В чём здесь дело?
И ещё. Я генерирую для каждого файла уникальное имя. А как сохранить файл под его оригинальным именем (пробовал присвоить переменной значение $_FILES['image']['name'] - выдаётся ошибку)? Есть ли смысл в таком подходе, ведь имена могут повторяться или для каждого можно генерировать уникальное имя?
Заранее спасибо. Надеюсь, я не очень сумбурно объяснил.
 
M

MajestiC

Вместо empty - is_uploaded_file
Вместо copy- move_uploaded_file

запись в файл не происходит. Зато когда я убираю if (!empty($_FILES['image']['tmp_name'])) - всё превосходно
Ну так посмотри что у тебя находится в $_FILES['image'], дебажишь что ли в первый раз?

А как сохранить файл под его оригинальным именем (пробовал присвоить переменной значение $_FILES['image']['name'] - выдаётся ошибку)?
$image = "../files/".$_FILES['image']['name'];
copy($_FILES['image']['tmp_name'], "../".$image);

Есть ли смысл в таком подходе, ведь имена могут повторяться или для каждого можно генерировать уникальное имя?
Обычно лучше генерировать уникальное.
 
C

Crazystitch

У меня также возникла проблема с копированием загруженного файла

Ошибка где-то тут:


$addr="Images/".$_FILES["foto"]["name"];
move_uploaded_file($_FILES["foto"]["tmp_name"], $addr);

значение $_FILES["foto"]["tmp_name"]=/home/sites/tmp/phpH1wZiC


Папка Images реально существует, всю инфу про файл вытянуть можно, а вот скопировать из временной директории в нужную не удается.

Помогите, плз
 
M

MajestiC

Скорее всего проблема в правах на запись в директорию
 
A

Artexoid

А Ты случаем не забыл

enctype="multipart/form-data"

в теге форм :D?. Тогда всё норм выглядит, но файл не сохраняеться !! :eek:.

Код:
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST" enctype="multipart/form-data">
 
M

MajestiC

Для: Artexoid
Да вроде он не забыл, раз $_FILES["foto"]["tmp_name"]=/home/sites/tmp/phpH1wZiC, значит что-то закачалось.
 
C

Crazystitch

Для: Artexoid

К сожалению, не забыла. Если бы все так просто решалось, я была бы просто счастлива. (Я не он, я она). Скорее всего проблема действительно в правах. по крайней мере такой ответ удовлетворил заказчика :). Хотя если вдруг возможна другая причина, то хотелось бы ее устранить
 
A

Artexoid

Crazystitch, Прошу прощения, Так в чём проблемма?? Зайди и посмотри какие права доступа стоят на каталоге..!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!