Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.96 Mб
Скачать

Клиентские методы http

Метод клиента определяет запрос, отправленный от Web-клиента, либо РНР-сценария, HTTP-серверу. Существуют три основных типа запросов: по методу GET, POST, HEAD.

По методу GET контент запроса посылается через поля формы или через строку URL, по методу POST – через поля формы. Запросы можно создать и отправить с помощью средств JavaScript, а ответ получить обратно с помощью методов PHP. Если необходимо получить информацию о запрошенном URL, но не информацию самого URL, то можно использовать запрос HEAD.

Простой способ просмотреть HTTP запросы и ответы состоит в установке плагина для браузера Firefox, который называется HttpFox и доступен для свободного скачивания. Ниже приведен пример работы HttpFox для сервера localhost.

Обработка html-форм

Одно из главнейших достоинств PHP – это реализация возможности работы с формами HTML для отправки информации на сервер и получения информации с сервера. Формой называется конструкция, состоящая из поименованных элементов, заключенных между HTML-тэгами <form...> и </form>. В качестве элементов формы могут выступать поля ввода текста, кнопки, выпадающие меню, переключатели, checkbox, а также картинки. Каждый элемент формы может пересылаться на сервер, после чего становится доступен серверным программам на PHP.

Важным свойством формы является то, что в ее заголовке в открывающем тэге <form action=”my.php”> можно указать адрес файла, содержащего код PHP. При загрузке кода в него передадутся значения всех элементов формы. Если в конфигурационном файле php.ini - параметр register_globals=on, имена передаваемых переменных соответствуют именам, которые были даны элементам формы, а значения - соответственно значениям этих элементов. Для поля ввода текста это введенный текст, для переключателя или checkbox – это true при отмеченном и false при неотмеченном выборе, для рисунка - координаты указателя мыши относительно верхнего левого угла изображения.

Кроме того, переменные, передаваемые через форму, помещаются в глобальные ассоциативные массивы $_POST_ или $_GET. Например, cодержимое поля ввода текста

<input type=text name=’mynamesize=30>

окажется в элементе $_GET['myname']. Различие между двумя методами состоит в том, что при передаче данных методом GET эти данные отображаются в адресной строке браузера, а при использовании метода POST - нет. Переменные $_POST и $_GET доступны и во всех функциях, расположенных в программе РНР, т. к. являются глобальными. Способ передачи данных через глобальные переменные является основным, поскольку в последних версиях PHP register_globals= off по умолчанию. Ниже показаны обычно используемые суперглобальные переменные PHP: $_GET[], $_POST[], $_REQUEST[], $_COOKIE[], $_FILES[], $_SERVER[], $_ENV[], $_SESSION[].

Передача переменных из формы в скрипт.

Каждое поле ввода имеет имя, задаваемое атрибутом name и значение передаваемые в обработчик. Обработчик - это PHP скрипт на сервере, в который будут переданы значения полей ввода. Пример:

<form action="action.php" method="POST">

Ваше имя: <input type="text" name="name" />

Ваш возраст: <input type="text" name="age" />

Пароль:<input type="text" name="password" />

<input type="submit">

</form>

Когда пользователь заполнит форму и нажмет кнопку отправки submit, будет вызван обработчик action.php. В этом файле может быть:

<html>

<body>Здравствуйте,

<?php

echo $_POST["name"];

?>.

Вам <?php echo $_POST["age"]; ?> лет.

Пароль:<?php echo $_POST["password"]; ?>

</body></html>

Вывод:

Здравствуйте, Егор. Вам 20 лет. Пароль:******

Переменные The $_POST["name"] и $_POST["age"] автоматически установлены в значения "name" и "age" из формы средствами PHP. Если бы мы использовали метод GET, то информация нашей формы была бы в суперглобальной переменной $_GET ["name" ] и $_GET["age"]. Также можно использовать переменную $_REQUEST, если источник данных не имеет значения. Эта переменная содержит смесь данных $_GET, $_POST, $_COOKIE и $_FILE.

При использовании метода GET все данные упаковываются в адресную строку следующим образом: вначале имена переменных и их значения преобразуются в вид, безопасный для передачи в строке URL. Все символы, кроме алфавитно-цифровых и знака подчер­кивания "_" заменяются знаком процента "%" и двумя шестнадцатерич­ными цифрами кода. Пробелы заменяются на "%20". После этого они преобразуются в форму name=value и собираются в одну строку, отделяясь друг от друга знаком & (амперсанд). Происходит это так:

http://site.domain/action.php?имя=значение&имя=значение

Пары "имя=значение" создаются для каждого элемента ввода, для которого указано имя атрибутом NAME. В таком виде данные и попадают к скрипту, который должен проделать обратную операцию и извлечь из строки названия переменных и их значения. Строка запроса может содержать не более 254 символов. Это одно из ограничений метода GET, которое не позволяет передавать объемные данные. В отличие от других серверных языков программирования, PHP делает всю работу по расшифровке строки запроса, переданной методом GET, и предоставляет готовые для использования переменные. Имя переменной образуется из имени, указанного в соответствующем элементе формы.

Передача данных этим способом не разрешается при register_globals=off и происходит через суперглобальные массивы $_GET и $_POST. Рассмотрим пример:

<html> <!--pr421.php -->

<head> </head>

<body>

<?php //

$a =$_GET['a'];

$b =$_GET['b'];

$с =$_GET['с'];

$c++;

echo "a=$a,b=$b"; //

print "<br>c=$c";//

echo "<br><a href='pr421.php?a=1&b=2&c=3'>новая передача</a>"

?>

</body>

</html>

Результат:

После запуска:http://localhost/My/pr421.php?a=10&b=20&c=30

a=10,b=20

c=31 новая передача

Если нажмем на гиперссылку новая передача, получим

a=1,b=2

c=4 новая передача