Красносельский
Константин
Константинович

Компьютер и программы

Веб-дизайн

Справочники

Документация по CSS1

Настройка файла .htaccess

Коды ошибки http сервера

Подстановочные символы и регулярные выражения

Спецификация файла robots.txt

SSI – Server Side Includes

Таблица кодировки символов кириллицы

Нестандартные символы в HTML

Вторая таблица символов HTML

MIME Types (типы файлов)

 

Советы начинающим

Как в PHP поместить enum в массив

Советы начинающим Веб-дизайнерам: Что, где и зачем.

Правила плохого тона

WEB-уловки

Камень предкновения: верстка таблицами или блоками?

Рекомендации по разработке веб сайта

 

Анализ WEB-конъюнктуры. Создание лучшего сайта и его раскрутка.

Анализ WEB-конъюнктуры

Предисловие

Приручение поисковых машин

Уровень документа - все гениальное просто

Благоустройство нор для поисковых червей или как водить пауков по нашей паутине

Ускорение индексации сайта

Если гора не идет к Магомету

Индекс цитирования

Что это такое и с чем его едят

Приобретение веса в глазах общественности

Послесловие

Последние замечания по интернет-раскрутке

 

Приложения

А: «Рекомендации лучших пауководов»

Краткий комментарий.

Советы специалистов поисковой системы Rambler.

Использование файлов robots.txt.

Часто задаваемые вопросы.

Советы специалистов поисковой системы Aport.

Регистрация сайта в Апорте.

Советы специалистов поисковой системы Yandex.

Добавление страниц

Индексирование

Положение страницы на выдаче

Поиск со своей страницы

Ответы на часто задаваемые вопросы

 

Б: «1000 сверх-сайтов Рунета»

1000 сверх-сайтов Рунета

 

В: «Сто наиболее популярных поисковых слов»

Сто наиболее популярных поисковых слов

 

Г: «Где это сделать?»

Где это сделать?

 

Д: «Практическое руководство!!!»

Краткий комментарий.

Окна, ссылки и меню.

Ссылки и окна. Внешний вид и внутреннее содержание.

Организация ссылок. Всевозможные оглавления.

Если вам не нравятся фреймы, значит, вы не умеете их готовить.

Меню из выпадающих списков (javascript и CSS).

Многоуровневое раскрывающееся меню (javascript и CSS).

Работа с базами данных.

Обработка баз данных браузером посетителя

Обработка баз данных сервером (PHP)

Взаимодействие с посетителем

Отправка писем с веб-страницы.

Формы

Методы форм.

Создание на сайте PHP голосования.

Регистрация и контроль посетителей (PHP).

Интерактивность материала.

Создание гостевой книги на PHP.

Удаление записей из текстовых баз (PHP).

Заргузка файлов на сервер по HTTP-протоколу (PHP).

Разное.

Псевдослучайные элементы (PHP, javascript).

Точное определение имени и версии браузера с помощью JavaScript, SSI или PHP

Клоакинг и технология «Входных дверей».

Отложенное выполнение и выполнение с заданным интервалом (javascript)

Информация о размере, дате, собственные счетчики и протоколы посещений

 

 

 

Консультации

Экспорт и импорт новостей

PHP chmod – права доступа к файлам

WEB 2.0 – миф, или реальность?

Давно забытый AJAX

Способы хранения веб-страниц: документы FrontPage или базы данных

Как заработать на своем сайте?

FTP клиент, как настроить Total Commander

Знак собаки @ и подавление ошибок в PHP

AJAX

AJAX с точностью до наоборот, или как научить AJAX сохранять историю в браузере

 

Мониторинг веб сайтов и анализ поисковых запросов

Документация по Веб-дизайну

Желающим скачать PHP скрипт или JavaScript

 

Литература и поэзия

Гуманитарные науки

Хронология материалов

Обращение к посетителям

Скачать шрифты

Скачать рефераты

Создание web сайта на заказ

Создание веб сайтов (цены)

Веб-сайты, созданные мной (потенциальным заказчикам)

Полезные ссылки

Об авторе

Статистика сайта

 

Web На сайте

 

 

 

ТаблицейБлоками.

Приложение Д: PHP upload - Загрузка файлов на сервер

Последняя модификация: 10.08.2014 г

Страница загружена с адреса: http://webdesign.site3k.ru/conjuncture/append/d/upload.html

Моя студия веб-дизайна

Загрузка файлов на сервер по HTTP-протоколу с использованием PHP

  1. PHP и HTML формы для загрузки файлов
  2. PHP-скрипт для загрузки файлов по HTTP-протоколу

PHP и HTML формы для загрузки файлов

В некоторых ситуациях может потребоваться загрузка файлов на сервер не по FTP-протоколу, а по HTTP. Наиболее часто такая загрузка встречается на форумах, предоставляющих возможность участникам выбирать картинки для визуализации, или в баннерных сетях, где участник сети должен предоставлять свои баннеры. Может она пригодиться и в других ситуациях.

Скрипт загрузки опирается на следующую HTML-форму:

<form enctype="multipart/form-data" action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
Отправить файл: <input name="myfile" type="file">
<input type="submit" value="Выполнить">
</form>

В этой форме обязательно применяется метод POST, так как только этим методом допускается отправка файлов и тип кодирования multipart/form-data (как в письмах с вложением), поскольку этот запрос является запросом с вложением. Так же в ней может применяться встроенная переменная MAX_FILE_SIZE1 , указывающая допустимый размер отправляемого файла в байтах. Переменная MAX_FILE_SIZE не является обязательной, но если используется, обязана указываться до указания поля файла.

Использование переменной MAX_FILE_SIZE не гарантирует того что, посетитель не сможет отправить файл большей величины. Для ее обхода злонамеренному или небрежному посетителю достаточно использовать собственную форму на своем сайте, отправляющую запрос на ваш скрипт. Для полной гарантии, скрипт должен проверять, во-первых, переменную $HTTP_REFERER (откуда пришел запрос), во-вторых, установлена ли переменная MAX_FILE_SIZE и соответствует ли она заданному значению, в-третьих, не превышает ли размер загруженного файла значение переменной MAX_FILE_SIZE. Проверка трех этих условий дает полную гарантию того что, ситуация развивается строго по ВАШЕМУ сценарию.

Полученный из формы файл помещается в каталог для временных файлов (сведенья о котором можно получить по переменной upload_tmp_dir) и по окончании работы скрипта автоматически уничтожается. Пока скрипт работает, и файл не уничтожен, его содержимое можно вывести на страницу, функцией

readfile(Имя_временного_файла_на_сервере);

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

copy(Имя_временного_файла_на_сервере, "результирующее_имя");

или

move_uploaded_file(Имя_временного_файла_на_сервере, "результирующее_имя");

Если содержимое файла помещается в массив или переменную величина файла не должна превышать значение переменной memory_limit, устанавливающей максимальное количество оперативной памяти доступной скрипту (если таковая установлена).

Для копирования или перемещения файла в заданный каталог, на этом каталоге должны стоять атрибуты 777, которые можно установить с помощью ftp-клиента или PHP-функции chmod("имя_каталога", 0777).

 

Знание реального имени временного файла не требуется для выполнения этих действий. После получения данных скриптом сведенья о файле доступны через специальные переменные и массивы ключом к которым является атрибут name элемента input type="file" отправившей его формы. Так, если имя этого элемента «myfile», ключом к данным о файле будет «myfile» и все сведенья о нем можно получить по трем схемам:

 

Обращение по имени переменной заданной в поле файла:
ПеременнаяСодержание
$myfile_nameИмя файла на компьютере
$myfile_typeMIME-тип файла (если его сообщил браузер)
$myfileИмя временного файла на сервере
$myfile_sizeРазмер файла

 

Обращение через массив $HTTP_POST_FILES с использованием переменной заданной в поле файла:
ПеременнаяСодержание
$HTTP_POST_FILES['myfile']['name']Имя файла на компьютере
$HTTP_POST_FILES['myfile']['type']MIME-тип файла (если его сообщил браузер)
$HTTP_POST_FILES['myfile']['tmp_name']Имя временного файла на сервере
$HTTP_POST_FILES['myfile']['size']Размер файла
$HTTP_POST_FILES['myfile']['error']Код ошибки, возникшей при загрузке файла

 

Обращение через массив $_FILES с использованием переменной заданной в поле файла:
ПеременнаяСодержание
$_FILES['myfile']['name']Имя файла на компьютере
$_FILES['myfile']['type']MIME-тип файла (если его сообщил браузер)
$_FILES['myfile']['tmp_name']Имя временного файла на сервере
$_FILES['myfile']['size']Размер файла
$_FILES['myfile']['error']Код ошибки, возникшей при загрузке файла

 

Генерируемый PHP код ошибки имеет следующие значения:

is_uploaded_file(Имя_временного_файла_на_сервере)

Проверяющую, был ли файл загружен.

Для загрузки нескольких файлов следует помещать в форму несколько элементов типа file, имеющих разные имена или несколько полей, в имени которых используется массив:

<input name="myfile[]" type="file">

В данном случае имена файлов будут доступны по дополнительному ключу массива:

Для первого файла

$_FILES['myfile']['name'][0]
$_FILES['myfile']['type'][0]
$_FILES['myfile']['tmp_name'][0]
$_FILES['myfile']['size'][0]
$_FILES['myfile']['error'][0]

Для второго файла

$_FILES['myfile']['name'][1]
$_FILES['myfile']['type'][1]
$_FILES['myfile']['tmp_name'][1]
$_FILES['myfile']['size'][1]
$_FILES['myfile']['error'][1]

И так далее.

Таковы теоретические основы загрузки файлов на сервер по HTTP-протоколу с использованием PHP и форм с элементом type="file". А так выглядит практический скрипт для выполнения этой задачи:

PHP-скрипт для загрузки файлов по HTTP-протоколу

 


1 Кроме переменной MAX_FILE_SIZE максимальный размер загружаемого файла ограничивает директива upload_max_filesize в php.ini, значение которой можно узнать применив функцию phpinfo(). Сервер не позволит загрузить файл большей величины, чем указана в upload_max_filesize даже если MAX_FILE_SIZE не установлена или позволяет загрузку таких файлов. По умолчанию upload_max_filesize равно двум мегабайтам. Кроме того, ограничение на размер загружаемого файла оказывает переменная post_max_size, устанавливающая максимальный размер данных в POST-запросе. Если размер файла не выходит за рамки, установленные в MAX_FILE_SIZE и upload_max_filesize, но общий размер данных формы после кодирования больше определенного в post_max_size, файл не будет загружен.

 

Комментарии к странице (всего 5)

 

 

 


На главную страницу сайта