Формы в PHP
Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали о том, что такое сериализация в php. В данной статье я бы хотел рассказать о том, как работать с формами в PHP. Язык PHP предназначен для программирования web-сценариев, и обработка форм занимает, пожалуй, самое главное место в этом процессе. Сейчас уже и не встретить сайтов, на которых не было бы, к примеру, регистрации или формы обратной связи, или опросника. Форумы, интернет-магазины, добавление комментария, отправка сообщения в социальной сети — всё это обработка данных, помещенных в поля формы. Давайте на примере разберемся, как обрабатывать формы на PHP.
Будем реализовывать простую задачу: необходимо создать 2 поля (имя и фамилия), передать эти данные скрипту action.php, в результате должно выйти приветствие "Добро пожаловать, фамилия имя". Кто забыл, как создаются формы, и какие там есть поля, можно посмотреть ТУТ. Создадим файл test.html:
<html> <head> <meta charset="utf-8"/> </head> <body> <form action="action.php"> Имя: <input type="text" name="name" value=""/> Фамилия: <input type="text" name="surname" value=""/> <input type="submit" name="start" value="Запустить сценарий"/> </form> </body> </html>
Обращаю ваше внимание, что файл action.php (в нашем случае) должен находиться в одной папке с файлом test.html. Тут можно указывать как относительные, так и абсолютные пути. Будьте внимательны, многие ошибки связаны с неправильным указанием пути до скрипта-обработчика формы.
Создадим файл action.php со следующим содержимым:
<?php echo "Данные из строки браузера: $_SERVER[QUERY_STRING]"; ?>
Если мы сейчас откроем файл test.html, заполним поля формы и нажмём на кнопку, то попадём в файл action.php, где будет выведено сообщение. В данном случае браузер обращается к скрипту action.php и передает ему, через знак "?" все значения атрибутов name, расположенных внутри тегов <input>, разделенных символом &. Обратите внимание, что подставляется вместо $_SERVER[QUERY_STRING].
Нашу задачу мы можем решить, разобрав строку QUERY_STRING с помощью стандартных функций по работе со строками в PHP, но лучше воспользоваться другим механизмом — это использование массива $_REQUEST. Все данные, которые получены из полей формы, PHP помещает в массив $_REQUEST, не зависимо от того, каким способом были переданы данные: POST или GET (узнать можно через $_SERVER['REQUEST_METHOD']). Напоминаю чем эти способы отличаются:
Метод GET является открытым, метод POST является закрытым, т.е. они отличаются способом передачи параметров. Пример:
1) Если мы используем метод post: mysite.ru/request.php.
2) Если мы используем метод get: mysite.ru/request.php?myname=»Alex»&surname=»Gulynin».
Также, помимо массива $_REQUEST, PHP создаёт массивы $_GET и $_POST. Давайте теперь реализуем нашу задачу, на основе полученных знаний:
<?php echo "Добро пожаловать, ".$_REQUEST["surname"]." ".$_REQUEST["name"]; //В квадратных скобках передаётся атрибут name текстового поля ?>
Если мы сейчас заполним форму и нажмём на кнопку, то увидим, что скрипт action.php приветствует нас по фамилии и имени. Всё работает корректно.
Здесь всё хорошо, но если мы изменим название скрипта, то нужно будет вносить изменения в файл test.html. Давайте модифицируем файл action.php, так, чтобы, обращаясь к нему либо выводилась форма, когда мы ничего не отправили, либо приветствие, когда мы нажали кнопку:
<html> <head> <meta charset="utf-8"/> </head> <body> <?php if (!isset($_REQUEST['start'])) {?> <form action="<?=$_SERVER['SCRIPT_NAME']?>"> Имя: <input type="text" name="name" value=""/> Фамилия: <input type="text" name="surname" value=""/> <input type="submit" name="start" value="Запустить сценарий"/> </form> <?php} else { echo "Добро пожаловать, $_REQUEST['surname'] $_REQUEST['name']"; } }?> </body> </html>
Теперь мы не зависим от имени скрипта, т.к. задаем его через переменную окружения $_SERVER['SCRIPT_NAME']. Конструкция =$_SERVER['SCRIPT_NAME']?> равнозначна конструкции .
Помимо переменной окружения SCRIPT_NAME существует множество других.
Домашнее задание: необходимо написать скрипт, который будет выводить ip-адрес пользователя и его браузер. Подсказка: необходимо воспользоваться другими переменными окружения $_SERVER, все переменные окружения можно вывести с помощью php_info();
В данной статье вы узнали, как работать с формами в PHP.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.