Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в СУБД HyTech.doc
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
2.67 Mб
Скачать

Более сложная html- форма

Приведем пример более сложной формы, с разными типами элементов ввода:

<form action="ex6.php" method="POST">   <table border="0">     <tr>       <td>Фамилия:</td>       <td><input type="text" name="fio[]"></td>     </tr>     <tr>       <td>Имя:</td>       <td><input type="text" name="fio[]"></td>     </tr>     <tr>       <td>Отчество:</td>       <td><input type="text" name="fio[]"></td>     </tr>     <tr>       <td valign="top">Ваш пол:</td>       <td>         <input type="radio" name="sex" value="1">Мужской<br />         <input type="radio" name="sex" value="2">Женский<br />       </td>     </tr>     <tr>       <td>Изучаю PHP:</td>       <td><input type="checkbox" name="learn"></td>     </tr>     <tr>       <td colspan="2" align="right">         <input type="submit" value="Ok">         <input type="reset" value="Отмена">       </td>     </tr>   </table> </form>

В данной форме, по сравнению, с предыдущей есть еще поле ввода «Ваш пол:» (тип поля «радио-кнопка» – предполагается выбор из возможных альтернатив, в качестве имени для радио-кнопки задано одно и то же имя переменной sex, понятно, что она может иметь только одно значение). Также в форму добавлено поле «Изучаю PHP» (тип поля «флаг», т.е. значение может быть либо true, либо false).

Пример скрипта обработки ex6.php:

<?php $arr = $_REQUEST[ "fio" ]; echo "Фамилия: $arr[0]<br />"; echo "Имя: $arr[1]<br />"; echo "Отчество: $arr[2]<br />"; if( $_REQUEST[ "sex" ] == 1 ) {   echo "Пол: мужской<br />"; } elseif ( $_REQUEST[ "sex" ] == 2 ) {   echo "Пол: женский<br />"; } else {   echo "Пол: не указан<br />"; } echo "<br />"; if( $_REQUEST[ "learn" ] ) {   echo "Ура! Изучает PHP<br />"; } ?>

6.3.2 Сессии Взаимодействие между клиентом и сервером

Протокол HTTP реализует взаимодействие между клиентом и сервером по принципу «запрос-ответ», однако для работы реальных приложений этого недостаточно. В ряде случаев HTTP-сервер должен сохранять информацию о клиенте, чтобы использовать ее при следующих запросах. Таким образом, HTTP-сервер должен уметь идентифицировать конкретного клиента. Примеры, когда это может потребоваться:

  • Авторизация доступа;

  • Сложный пользовательский интерфейс (когда есть зависимости между формами ввода).

Для решения этой задачи PHP предлагает механизм сессий.

Сессия – это временной период, в течение которого конкретный пользователь взаимодействует с HTTP-сервером. Сессия начинается с момента первого запроса клиента и завершается:

  • При явном указании на то клиента (например, нажали кнопку «Завершить работу»);

  • При закрытии клиентского приложения (браузера);

  • При длительном отсутствии активности клиента (истечение таймаута, в течение которого от клиента не было ни одного запроса).

В PHP пользовательская сессия идентифицируется путем присвоения ей уникального 32-байтного идентификатора (SID, Session IDentifier), например: af65756756fghgfuyiu890tyi0iu7780.

SID передается на сервер с каждым запросом клиента и возвращается клиенту с ответом сервера.

Механизм сессий в PHP позволяет определить конкретную сессию и сохранять переменные, связанные с данной сессией, в течение всего периода работы клиента в рамках данной сессии.

Переменные сессий хранятся в файлах на сервере. В файле настроек PHP – php.ini должен быть задан параметр session.save_path, в котором указывается, в каком каталоге будут храниться файлы с переменными сессий. Для каждой сессии создается свой файл. Может так оказаться, что файлов сессий в процессе работы создано очень много, что может повлиять на производительность сервера (требуется искать файлы в большом каталоге). Этого можно избежать, указав в параметре session.save_path перед именем каталога, целое число и символ ;. Это целое число будет определять глубину вложенности подкаталогов, создаваемых для хранения файлов с переменными сессий.

Примеры:

;без подкаталогов session.save_path = /var/www/sessions ;с подкаталогами, уровень вложенности 2 session.save_path = 2;/var/www/sessions