Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Клиентские методы HTTP
В HTTP метод клиента определяет запрос, отправленный от Web-клиента, либо РНР-сценария, HTTP-серверу. Существуют три основных типа запросов:
GET-запросы. Когда вы хотите только получить информацию от источника HTTP, то можете сделать это методом GET. Получить информацию можно из файла, либо от исполняемой программы на Web-сервере с указанным URL-адресом. Привлекательность HTTP состоит в том, что запрос GET делает выполнение программы таким же простым, как извлечение файла.
POST-запросы. Когда вы хотите отправить информацию от клиента Web-серверу, то используете запрос POST. Обычно это имеет место, когда вы отправляете содержимое Web-формы Web-серверу.
HEAD-запросы. Когда вы хотите получить информацию о запрошенном URL, но не информацию самого URL, то используете запрос HEAD.
По методу GET контент запроса посылается через поля формы или через строку URL, по методу POST – через поля формы. Запросы можно создать и отправить вручную с помощью средств JavaScript, а получить обратно с помощью методов PHP.
Простой способ просмотреть HTTP запросы и ответы состоит в установке плагина для браузера Firefox, который называется HttpFox и доступен для свободного скачивания.
Ниже приведен пример работы HttpFox для сервера localhost.
Обработка HTML-форм
Одно из главнейших достоинств PHP – это реализация возможности работы с формами HTML. Формы используется почтовыми службами, электронными магазинами и многими другими типами сайтов. Формы – удобный способ получения информации от посетителей сайта. Пример тому – гостевая книга, – которая обеспечивает обратную связь с посетителями и разработчиками сайта.
Формой называется конструкция, состоящая из поименованных элементов, заключенных между HTML-тэгами <form...> n</form>. В качестве элементов формы могут выступать поля ввода текста, кнопки, выпадающие меню, переключатели, квадратики для отметки галочкой checkbox, а также картинки формата jpg или gif. Каждый элемент формы может иметь свое имя. При этом каждый элемент клиентской формы может пересылаться на сервер и становится доступен серверным программам на PHP.
Наиболее важным свойством формы является то, что в ее заголовке в открывающем тэге <form...> можно указать адрес какого-либо файла. В этом случае при загрузке этого файла в программный код, если он будет там присутствовать, передадутся значения всех переменных, установленных в этой форме, в частности, значения всех элементов формы, как если бы эти значения были установлены в программе, расположенной в самом загружаемом файле. Таким образом, можно передавать значения переменных между различными web-страницами, используя их в программном коде.
Если в конфигурационном файле РНР - php.ini - параметр register_globals установлен в on, имена передаваемых переменных соответствуют тем именам, которые были даны элементам формы, а значения - соответственно значениям этих элементов: для поля ввода текста - введенному тексту, для переключателя или checkbox - True при отмеченном и False при неотмеченном, для рисунка - координаты указателя мыши относительно верхнего левого угла изображения. Кроме того, переменные, передаваемые через форму, помещаются в ассоциативные массивы $_POST_ или $_GET. Содержимое поля ввода текста <input type=text name=’myname’ size=30> окажется в элементе $_POST['myname']) или $_GET['myname']). Различие между двумя методами состоит в том, что при передаче данных методом GET эти данные отображаются в адресной строке браузера, а при использовании метода POST - нет. Переменные $_POST и $_GET доступны и во всех функциях, расположенных в программе РНР, т. е. являются глобальными. Способ передачи данных через глобальные переменные является основным, поскольку в последних версиях PHP register_globals установлен в off по умолчанию. Ниже показаны обычно используемые суперглобальные переменные PHP: $_GET[], $_POST[], $_REQUEST[], $_COOKIE[], $_FILES[], $_SERVER[], $_ENV[], $_SESSION[].
Передача переменных в скрипт.
PHP скрипты используются для обработки на сервере полей форм, которые задаются на клиенте. Форма содержит тэги и атрибуты:
<form name="имя_формы" action="путь_к_обработчику"
method="метод_передачи_переменных GET или POST ">
поля ввода...
</form>
Обработчик - это скрипт на сервере, в который будут переданы значения полей ввода. Каждое поле ввода имеет имя, задаваемое атрибутом name и передается в обработчик вместе со своим значением. Рассмотрим пример:
<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 лет. Пароль:******
Метод отправки формы - POST. Переменные The $_POST["name"] и $_POST["age"] автоматически установлены в значения из формы средствами PHP. Если бы мы использовали метод GET, то информация нашей формы была бы в суперглобальной переменной $_GET. Также можно использовать переменную $_REQUEST, если источник данных не имеет значения. Эта переменная содержит смесь данных GET, POST, COOKIE и FILE.
Передача значений переменных по методу GET
При использовании метода GET все данные упаковываются в адресную строку. Причем происходит это следующим образом: вначале имена переменных и их значения преобразуются в вид, безопасный для передачи в строке URL (особенно хорошо это заметно, когда передаются русские символы), после чего все данные преобразуются в форму name=value и собираются в одну строку, отделяясь друг от друга знаком & (амперсанд). Происходит это таким образом:
http://site.domain/action.php?имя=значение&имя=значение
Пары "имя=значение" создаются для каждого элемента ввода, для которого указано имя атрибутом NAME.
В таком виде данные и попадают скрипту, который уже самостоятельно должен проделать обратную операцию и извлечь из строки названия переменных и их значения. Строка запросаможет содержать не более 254 символов. Это одно из ограничений метода GET, которое не позволяет передавать объемные данные.
В отличие от других серверных языков программирования, PHP делает всю нудную работу по расшифровке строки запроса, переданной методом GET, на себя и предоставляет нам уже готовые для использования в скрипте переменные. Причем имя переменной образуется из имени, указанного в соответствующем элементе формы. Если пользователь ввел в строке $name запроса имени "Гриня", то в скрипте автоматически появится переменная $name, которая будет иметь значение "Гриня".
По определению, все данные, передаваемые этим способом, доступны всем и могут быть прочитаны кем угодно. Поэтому им не рекомендуется пользоваться для передачи секретной информации - например паролей.
Рассмотрим пример передачи данных через строку URI:
<!—pr421.php -->
<html>
<head> </head>
<body>
<?php //
$a =$_GET['a'];
$b =$_GET['b'];
$c++;//Если режим on включен. Следует сначала написать $с =$_GET['с'];
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/MyPrimers/pr421.php?a=10&b=20&c=30
a=10,b=20
c=31
новая передача
Если нажмем на гиперссылку новая передача, получим
a=1,b=2
c=4
новая передача
Передача данных из клиентской формы на сервер по методу GET
<html><head>
<title>Simpleform.html </title>
</head>
<body>
<form action="form.php" method="GET">
Имя:<input type="text" name="fio"><p>
<input type="submit" value="GO"><p>
</f orm>
</body>
</html>
<?php //form.php
echo "Hello, $fio<br>";
foreach($_GET as $fio=>$value);
echo "$fio=$value<br>";
print_r ($_GET);
print_r ($_REQUEST);
?>
Результат:
Hello,valera
fio=valera
Array ([fio] => valera) Array ([fio] => valera)
Передача данных из клиентской формы на сервер по методу POST
Метод POST, в отличие от GET, передает все данные на стандартный вывод. Соответственно, и ограничений на длину информации нет.
Какой же из этих методов лучше? Это зависит от конкретной ситуации. Для передачи информации, вводимой в форме, в большинстве случаев лучше подходит метод POST. А вот в случае динамических сайтов, когда показываемая страничка определяется не только адресом странички, но и переменными (типичный представитель - интернет-магазин), лучше использовать метод GET.
Кроме простого задания переменной в форме, PHP позволяет использовать для этой цели и массивы. В этом случае код нашей формы будет выглядеть вот так:
<form action="formmail.php" method="post">
Ваше имя:
<input type="text" name="user[name]"><br>
Электронный адрес:
<input type="text" name="user[email]"> <br>
Сообщение:
<textarea name="user[message]"></textarea><br>
<input type="submit" value="Отправить">
</form>
Теперь все введенные пользователем данные будут находиться в массиве $user, что очень удобно для больших форм и передачи множества данных в функцию.
Задание состоит в выделении и создании основных объектов web страницы:
Admin, Новости, Форумы, Голосование, Счетчики, Информация о посетителе, Анкета, Гостевые книги, Форумы, Баннеры, Ссылки и каталоги ссылок, Чаты и общение, Электронная почта, Открытки, Статистика, Защита, Игры, Мультимедия и музыка, Тесты и викторины, Доски объявлений, Знакомства, обратная связь, галерея, календарь, рассылка/авторассылка и т.д.
Для используемых форм предусмотреть обязательные для заполнения поля формы. Выполнить проверку числовых или строковых полей на клиенте и на сервере. Для проверки данных использовать JavaScript или PHP.
Для хранения информации предусмотреть использование a) файл b)БД MySql.
Список заданий
1. Загрузка файла на сервер. Просмотр каталога из клиентской формы. Выбор файла и загрузка на сервер
2. Система отправки писем Send Mail. Отправка e-mail. E-mail с вложенными файлами. Интерфейс:
- Имя.
- e-mail.
- Отправить.
- Обратная связь или «контакты».
3. Рекомендация другу. На указанный e-mail оправляется письмо со ссылкой и рекомендациями, подписанные вами.
4. Система рассылки SMS - сообщений. Поддержка мобильной связи.
5. Система рассылки ICQ - сообщений.
6. Получение информации о клиенте и сервере.
7. Регистрация на сайте. Заполнить регистрационную форму: Фамилия, Имя, Город, E-Mail, login.
Система должна сгенерировать уникальный password. После регистрации отослать password по E-Mail.
8. Авторизация посетителя на сайте (логин, пароль, смена пароля и т.д.).
9. Счетчик посещений Counter – текстовый и графический.
10. HTTP Аутентификация и приветствие зарегистрированного клиента.
Интерфейс: Не видели Вас две недели Сэр. Рады видеть Вас снова на нашем сайте.
11. Удаленный web-counter. Необходимо реализовать службу наподобие RAMBLER:TOP100. Интерфейс: пользователь регистрируется и получает идентификатор. Таким образом он связывает свою страницу с сервером- носителем web-couter-а. После этого служба должна вести учет посетителей страницы пользователя.
Необходимо осуществить администраторские функции по включению и исключению произвольного пользователя администратором.
12. Откуда заходят посетители или поисковые машины. Адрес, IP- адрес, государство.
13. Подсчет on-line посетителей на сайте.
14. Администрируемая Гостевая книга.
- Имя:
- e-mail:
- Сайт:
- Город:
- Сообщение:
- Отправить
Интерфейс: пользователь заходит на страницу гостевой книги, на которой он сможет ввести сообщение, а также просмотреть сообщения оставленные другими пользователями. Создать две кнопки “Ввести” и “Просмотреть”.
Должны быть выполнены такие администраторские функции как включение и исключение сообщения в гостевой книге, запрет и управление запретом на включение сообщения содержащее определяемые администатором выражения, запрет и управление запретом на включение сообщения с заданных администатором хостов.
Помимо указанных пунктов можно предусмотреть:
1. Ответ администратора
2. Шаблон вывода.
3. Фильтр слов.
4. Смайлы
15. Голосование.
Интерфейс:
Как жизнь?
.Отлично
.Хорошо
.Средне
.Плохо
.Хуже плохого
Дата публикования: 2014-11-18; Прочитано: 596 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!