Отслеживание заказчиков с помощью массива $_SESSION[]
Итак, давайте применим все это для задачи присваивания уникального ID (переменной OrderNo) посетителю и отслеживания этого номера при перемещении посетителя со страницы на страницу.
page1.php
<?php session_start(); $_SESSION[OrderNo] = session_id(); header("Location:page2.php"); ?>
Значение id сеанса доступно теперь на последующих страницах для задач отслеживания и идентификации. К нему можно обратиться с помощью $_SESSION[OrderNo]. Следующий пример показывает, как это значение будет извлекаться и выводиться на второй странице:
page2.php
<?php session_start(); echo "Привет! Ваш идентификационный номер " . $_SESSION[OrderNo]; ?>
Может показаться, что такая техника будет единственно разумным способом поддержания состояния между различными страницами. Однако, существуют потенциальные проблемы. Например, если во время посещения заказчик будет неактивен в течение 20 минут, то PHP автоматически завершит сеанс, и не будет никакой возможности восстановить действия этого человека. Это может произойти, например, если заказчика приглашают к телефону, он отвлекается на другой сайт или просто уснул. Будет создан совершенно новый сеанс, когда он вернется, и мы вынуждены будем искать способ удалить все ожидающие объекты покупки, так как нет способа завершить предыдущие транзакции.
Поэтому необходимо будет сопоставить преимущества использования сеансов с неудобством наличия брошенных сеансов. Тем не менее, разумно предположить, что большинство посетителей не будут создавать перерывы активности, превышающие 20 минут, и что простота программирования с помощью объекта сеанса превышает другие соображения. Как отмечено выше, всегда можно изменить 20-минутный интервал, если он покажется слишком коротким.