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

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

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

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

Обращение к файлу, выбранному в форме...

  • Автор темы prosto_lynx
  • Дата начала
P

prosto_lynx

На страничке (HTML-файл) человек заполняет форму, одно из полей которой type="file" (пусть: name="ava") - это изображение!
После нажатия кнопки "submit" загружается новая страница (php), где нужно вывести это изображение.
Оно передается, как я понимаю, так же как и другие переменные новой странице...
Но как к нему правильно обращаться? Как его вывести на страницу?
Пытаюсь сделать через "echo" и тэг "IMG", но никак не получается((
 
P

prosto_lynx

В HTML-е код:
PHP:
<FORM ENCTYPE="multipart/form-data" action="reg.php" METHOD="post">
<tr><td>Аватарка: <input name = "ava" type = "file"></td></tr>
<tr><td> <input type = "submit" value="Загрузить">
</form>

А в PHP на открытие файла:
PHP:
 $handle = fopen ($_FILES ['ava']['tmp_name'], "rb");

выдает ошибку, что-то типо:
неопределенная переменная "ava"

(хотя пример из книги скатан... и версия php подходящая вроде)
 
P

prosto_lynx

=))) пардон...
я просто там уже по всякому изголялся... по всякому писал - не получается... поэтому уж думаю, просто хоть как-то к нему обратиться...))

вот один из моих предположений:
PHP:
 echo "<IMG src={$_FILES ['ava']['tmp_name']}>";
 
C

codebyner

PHP:
if(move_uploaded_file($_FILES['ava']['tmp_name'], $_FILES['ava']['name'])){
$img_src = $_FILES['ava']['name'];
$img = '<img src="'.$img_src.'" alt="подсказка" name="ava">';
}
else{
$img = 'Error';
}

echo $img;
 
V

vital

PHP:
$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/uploads/';

$uploadfile = $uploaddir.basename($_FILES['myfile']['name']);

$file=file_get_contents($_FILES['myfile']['tmp_name']);

move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)
собсно рабочий пример. Обратите внимание на второй параметр передаваемый функции. Он _обязан_ быт полным путем в текущей файловой системе.
 
C

codebyner

))
у меня все работает...

если указываете просто имя файла, то он перемещается в папку с текущим скриптом.
если вы используете функцию move_uploaded_file(), зачем тогда вам нужна третья строчка?
 
V

vital

зачем тогда вам нужна третья строчка?
это копипаста из раочего проекта.
если указываете просто имя файла, то он перемещается в папку с текущим скриптом.
Низя так делать. Это раз. И вы на боевом сервере проверяли? это два.
 
C

codebyner

видно в проекте много лишних строк)

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

вопрос заключался в том как отобразить принимаемый файл, а не объяснить все тонкости закачки файлов, включая тему безопасности и т.д.
 
C

codebyner

....
После нажатия кнопки "submit" загружается новая страница (php), где нужно вывести это изображение.
....

отобразить == вывести
файл == изображение

"вывести это изображение" == "отобразить файл"

может конечно не совсем корректно, но думаю смысл должен быть понятен. главное к словам не цепляться)
 
Мы в соцсетях:

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