Формы в PHP

Формы в 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']. Конструкция равнозначна конструкции .
Помимо переменной окружения SCRIPT_NAME существует множество других.

Домашнее задание: необходимо написать скрипт, который будет выводить ip-адрес пользователя и его браузер. Подсказка: необходимо воспользоваться другими переменными окружения $_SERVER, все переменные окружения можно вывести с помощью php_info();

В данной статье вы узнали, как работать с формами в PHP.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *