Для установки сеанса вызовите в PHP-сценарии функцию session s tar t о, ко — торая создаст cookie-набор со случайно сгенерированным идентификатором сеан —
са (PHPSESSID). Web-сервер должен передать Web-браузеру все cookie-наборы
(включая PHPSESSID) В заголовке Web-страницы. Следовательно, РНР-процессор
должен вызвать функцию session__start(), которая создает и вставляет cookie — набор с идентификатором сеанса в заголовок Web-страницы, до генерации сцена- рием другого содержимого страницы.
Таким образом, если вы планируете использовать переменные длительного
.хранения (сеансовые переменные), вставьте в начале-сценария входа на сргг или
в начале первой PHP-страницы, открываемой посетителем при входе на сайт,
следующий код:
Если посетитель уже начал сеанс на Web-сайте и не закрыл Web-браузер,
вызов функции session_start( ) продолжит или восстановит сеанс с ранее сге- нерированным идентификатором сеанса. В противном случае функция
session__start() сгенерирует новый случайный идентификатор сеанса и вставит его в заголовок Web-страницы в виде cookie-набора с именем PHPSESSID. ЕСЛИ посетитель в настройках своего Web-браузера указал, что браузер должен запра — шивать посетителя при необходимости приема cookie-набора, при получении браузером Web-страницы с cookie-набором (PHPSESSID), содержащим идентифи — катор сеанса, Web-браузер на экран выведет диалоговое окно, показанное на рис.
10.9.
52 8 t Глава 10. PHP4
После вызова функции session_start( ) для генерации идентификатора
сеанса и предупреждения PHP-процессора об использовании переменных длительного хранения (сеансовых переменных) можно зарегистрировать пере — менные, значения которых процессор должен сохранять в файле сеанса. Для регистрации переменной необходимо передать имя переменной, заключенной
в кавычки и без начального знака доллара ($), функции session_registerO, как показано в следующем коде, регистрирующем четыре сеансовые перемен —
ные ($s_firstName, $s_lastName, $s_address И $s_phoneNumber):
После регистрации переменной ее значение, которое должно сохраняться в течение сеанса, можно присвоить в любой момент времени. Тем не менее, функ —
цию session__register () нужно вызывать до передачи PHP-процессором любого
содержимого (даже одного единственного пробела) в выходную Web-страницу.
(Вызов функции session_registe r о для регистрации сеансовой переменной не изменяет и не устанавливает текущее значение этой переменной.)
Пример сценария установки и использования значений сеансовых перемен —
ных на Web-страницах сайта можно найти в файле chptiOTipO7.zip, который доступен для выгрузки на сайте http://www. diasoft. kiev. ua. Сценарий, содер —
жащийся в начале PHP-страницы chptiOTipO7.php, вызывает функцию
sessionjstarto, которая генерирует уникальный идентификатор сеанса. Затем
ближе к концу сценария входа на сайт в файле chptiOTip07Login. php вызывается
функция session_register() , которая регистрирует несколько сеансовых перемен —
ных и присваивает двум из них имя пользователя и пароль, введенные в элементах
формы (на Странице ChptlOTipO7.php). И, Наконец, СТранИЦЫ ChptlOGetPI. php И
chptiOGetPi2.php содержат формы, которые позволяют ввести посетителю лич —
ные данные, выводимые на экран сценарием страницы chptioshowinfo. php.
Создание базы данных MySQL и таблиц
В предыдущих советах в этой главе вы научились использовать встроенную
функцию fopen о для открытия текстового файла, находящегося на жестком
диске Web-сервера. Кроме того, было рассмотрено, каким образом встроенная
функция? gets () может использоваться для построчного считывания содержи- мого файла с целью обнаружения пары имя пользователя/пароль, совпадающей с данными, которые посетитель ввел в поля формы входа на сайт.
А теперь давайте предположим, что имеется текстовый файл, содержащий список товаров, продаваемых вашей компанией. С помощью уже полученных знаний вы можете написать PHP-сценарий, который для построчного считыва — ния списка товаров многократно вызывает функцию fgets() . Затем, после каждого очередного считывания, можно вызывать оператор echo или встроенную функцию