
- •1. Історія php
- •2. Можливості php
- •3. Установка і настройка по
- •3.1. Установка Apache 1.3.29 під Windows xp
- •3.2. Установка php 4.3.4 під Windows
- •1. Основний синтаксис
- •1.1 Розділення інструкцій
- •1.2 Коментарі
- •2. Змінні, константи і оператори
- •2.3 Константи
- •2.4 Оператори
- •1. Основний синтаксис
- •1.1 Розділення інструкцій
- •1.2 Коментарі
- •2. Змінні, константи і оператори
- •2.3 Константи
- •2.4 Оператори
- •1.2 Оператор else
- •1.3 Оператор elseif
- •1.4 Оператор switch
- •2 Цикли
- •3 Оператори передачі управління
- •4 Оператори включення
- •4. Лекція
- •2 Типи серверів
- •3 Протокол http і способи передачі даних на сервер
- •4 Методи
- •5 Використання html-форм для передачі даних на сервер
- •5. Лекція:
- •1 Функції, створені користувачем
- •2 Аргументи функцій
- •3 Списки аргументів змінної довжини
- •4 Статичні змінні
- •5 Значення, що повертаються
- •6 Повернення посилання
- •7 Внутрішні (убудовані) функції
- •6. Лекція:
- •2 Ініціалізація змінних
- •4 Спадкування extends
- •5 Оператор ::
- •6 Оператор parent
- •7. Лекція:
- •1 Масиви
- •2 Операції з масивами
- •3 Функції обробки масивів
- •4 Сортування масивів
- •5 Виділення підмасива
- •8. Лекція:
- •2 Запис даних у файл
- •3 Читання даних з файлу
- •4 Перевірка існування файлу
- •5 Видалення файлу
- •6 Завантаження файлу на сервер
- •10. Лекція:
- •1 Бази даних: основні поняття
- •2 Ключі
- •3 Індексація
- •4 Субд MySql
- •5 Язик sql
- •6 Основні оператори язика sql
- •6.1 Оператор create table
- •6.2 Оператор drop table
- •6.3 Оператор alter table
- •7 Оператор select
- •8 Оператор insert
- •9 Оператор update
- •10 Оператор delete
- •11. Лекція:
- •1 Побудова інтерфейсу для додавання інформації
- •2 Запис даних в базу даних
- •3 Відображення даних, що зберігаються в MySql
- •1 Побудова інтерфейсу для додавання інформації
- •2 Запис даних в базу даних
- •3 Відображення даних, що зберігаються в MySql
- •12. Лекція:
- •2 Механізм сесій
- •3 Настройка сесій
- •4 Робота з сесіями
- •4.1 Створення сесії
- •4.2 Реєстрація змінних сесії
- •4.3 Видалення змінних сесії
- •5 Безпека
6 Завантаження файлу на сервер
Тепер вирішимо складнішу і часто виникаючу на практиці задачу завантаження файлу на сервер. Перше, що потрібно зробити, щоб завантажити файл на сервер, це створити html-форму. Для того, щоб за допомогою цієї форми можна було завантажувати файли, вона повинна містити атрибут enctype в тегу form із значенням multipart/form-data, а також елемент input типу file.
Приклад 9.11.
<form enctype="multipart/form-data" action="parse.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Загрузить файл: <input type="file" name="myfile" /><br>
<input type="submit" value="Отправить файл" />
</form>
Приклад 9.11. Форма для завантаження файлу на сервер
Помітимо, що ми додали у формі приховане поле, яке містить в собі максимальний допустимий розмір завантажуваного файлу в байтах. При спробі завантажити файл, розмір якого більше вказаного в цьому полі значення, буде зафіксована помилка. В браузері створена нами форма виглядатиме як рядок для введення тексту з додатковою кнопкою для вибору файлу з локального диска (рис 9.1).
Мал. 9.1. Приклад форми для завантаження файлу на сервер
Тепер потрібно написати скрипт, який оброблятиме одержаний файл.
Вся інформація про завантажений на сервер файл міститься в глобальному масиві $_FILES. Цей масив з'явився починаючи з PHP 4.1.0. Якщо включена директива register_globals, то значення переданих змінних доступні просто по їх іменах.
Якщо ми завантажили з комп'ютера-клієнта файл з ім'ям critics.htm розміром 15136 байт, то скрипт з єдиною командою print_r($_FILES); виведе на екран наступне:
Array ( [myfile] => Array ( [name] => critics.htm
[type] => text/html
[tmp_name] => С:\WINDOWS\TEMP\php49F.tmp
[error] => 0
[size] => 15136
)
)
Взагалі кажучи, масив $_FILES завжди має наступні елементи:
$_FILES['myfile']['name'] - ім'я, яке мав файл на машині клієнта.
$_FILES['myfile']['type'] - mime-тип відправленого файлу, якщо браузер надав цю інформацію. В нашому прикладі це text/html.
$_FILES['myfile']['size'] - розмір завантаженого файлу в байтах.
$_FILES['myfile']['tmp_name'] - тимчасове ім'я файлу, під яким він був збережений на сервері.
$_FILES['myfile']['error'] - код помилки, що з'явилася при завантаженні.
Тут 'myfile' - це ім'я елемента форми, за допомогою якого була проведено завантаження файлу на сервер. Тобто воно може бути іншим, якщо елемент форми назвати інакше. Але інші ключі ( name, type і т. д.) залишаються незмінними для будь-якої форми.
Якщо register_globals=On, то доступні також додаткові змінні, такі як $myfile_name, яка еквівалентна $_FILES['myfile']['name'], і т.п.
Помилок при завантаженні в PHP виділяють п'ять типів і відповідно $_FILES['myfile']['error'] може мати п'ять значень:
0 - помилки не відбулося, файл завантажений успішно
1 - завантажуваний файл перевищує розмір, встановлений директивою upload_max_filesize у файлі настройок php.ini
2 - завантажуваний файл перевищує розмір, встановлений елементом MAX_FILE_SIZE форми html
3 - файл був завантажений частково
4 - файл завантажений не був