Php функция при изменении поля формы. PHP _SELF в атрибуте формы action

В одной из прошлых тем уже рассматривалось получение данных из формы. В данной теме я подробнее расскажу, как правильно осуществляется отправка формы на сервер, а также обработка формы в PHP.

Отправка формы

Поле для ввода. Самыми распространёнными элементами формы являются различные поля для ввода. Они создаются при помощи тэга многих типов и тэга

select. Из тэга , а у пунктов списка, то есть у тэгов

Радиокнопка. У всех радиокнопок из одной группы атрибут name должен иметь одинаковое значение. Это значение не только устанавливает имя параметра, но и объединяет радиокнопки в группу, из которой можно выбрать только одну радиокнопку. Атрибут value устанавливается разный. Добавим радиокнопки в форму:

Чекбокс. В отличие от радиокнопок, каждый чекбокс - это отдельный элемент формы. Все чекбоксы независимы друг от друга и каждый отправляет свои данные на сервер. Атрибут name у всех чекбоксов должен быть разный, а атрибут value может быть либо одинаковый, либо разный. Однако у чекбокса нет каких-то конкретных данных. Он может быть либо выбран либо нет. Поэтому устанавливать ему длинное значение нет смысла. Ему можно задать значение в один символ, например, 1. На сервере смысл этого значения будет такой: если значение есть, то чекбокс был выбран, а если никакого значения нет, значит он не выбран. Добавим чекбоксы в форму и создадим кнопку оправки формы:

Обработка данных из форм

В предложенном примере создана форма отправляющая данные скрипту с названием takeform.php. Поэтому нужно создать этот скрипт. Это будет не просто программа, а страница, которая будет формироваться в зависимости от данных, получаемых из формы. Форму отправляем методом POST. Скрипт берёт эти данные из суперглобального массива $_POST . Элементы массива можно просто использовать в скрипте, но если с ними нужно много работать, то писать каждый раз название элемента неудобно. Проще записать значение в переменную и обращаться к ней. Создадим файл takeform.php и запишем в переменные значения из первых двух элементов формы:

takeform.php:

В тег

Можно обрабатывать формы, не заботясь о фактических именах полей.

Для этого можно использовать (в зависимости от метода передачи) ассоциативный массив $HTTP_GET_VARS или $HTTP_POST_VARS . Эти массивы содержат пары имя/значение для каждого элемента переданной формы. Если Вам все равно, Вы можете использовать ассоциативный массив $_REQUEST .

Пример 6

Обработка произвольного ввода независимо от метода передачи $value) echo "$key == $value
"; ?>

Пример 7. Обработка нажатия на кнопку с использованием оператора "@".

">

С помощью функции header() , послав браузеру заголовок "Location" , можно перенаправить пользователя на новую страницу.

Например:

Передача файла на сервер. Залить файл. UpLoad

PHP позволяет передавать на сервер файлы. HTML-форма, предназначенная для передачи файла, должна содержать аргумент enctype="multipart/form-data" .

Кроме того в форме перед полем для копирования файла должно находиться скрытое поле с именем max_file_size . В это скрытое поле должен быть записан максимальный размер передаваемого файла (обычно не больше 2 Мбайт).

Само поле для передачи файла - обычный элемент INPUT с аргументом type="file" .

Например:

" method="post">

После того, как файл передан на сервер, он получает уникальное имя и сохраняется в каталоге для временных файлов. Полный путь к файлу записывается в глобальную переменную, имя которой совпадает с именем поля для передачи этого файла. Кроме этого PHP сохраняет еще некоторую дополнительную информацию о переданном файле в других глобальных переменных:

Пример 8

Обработка переданного файла "; echo "имя: ".$_FILES["userfile"]["name"]."
"; echo "размер: ".$_FILES["userfile"]["size"]."
"; echo "тип: ".$_FILES["userfile"]["type"]."
"; } ?>
" method="post">

Примеры загрузки файлов на сервер

Если возникнут проблеммы с перекодировкой сервером загруженного файла, символ с кодом 0х00 заменен на пробел (символ с кодом 0х20 ), допишите в файл httpd.conf из каталога Апача (/usr/local/apache) следующие строки.

CharsetRecodeMultipartForms Off




Top