Введение в программирование на PHP5


Отслеживание заказчиков с помощью строки запроса


Однако возникает небольшая проблема. Всякий раз, когда пользователь возвращается на домашнюю страницу, ему будет присваиваться новый номер заказа. В этом случае необходимо проверять, не существует ли уже номер заказа для этого посетителя, и не создавать новый номер, если он уже существует.

Вспомните из предыдущего обсуждения, что для сохранения информации при переходе со страницы на страницу можно задействовать для передачи этой информации строки запроса. Мы ранее показывали, как использовать строку запроса для передачи информации поиска между страницами search.php и detail.php. То же самое можно делать со значением OrderNo. Можно передавать его как строку запроса со страницы на страницу, чтобы сохранить его и, для решения текущей проблемы, получить способ узнать, что номер заказа уже был создан.

Каждой странице сайта необходимо будет получать строку запроса, содержащую OrderNo вместе с любой другой информацией, которая может передаваться на эту страницу. Так как страница home.php также будет получателем строки запроса с OrderNo (когда посетитель возвращается на домашнюю страницу с других страниц сайта), то можно проверять присутствие этой строки запроса, чтобы убедиться, что номер заказа уже был присвоен, и пропускать процедуру генерации номера заказа.

Все эти объяснения сводятся к некоторому очень простому коду. Мы помещаем процедуру генерации случайного числа внутри условного оператора проверки значения строки запроса:

<?php

if ($_GET[OrderNo]) == "") { $OrderNo = rand(1111111111,9999999999); } ?>

Если домашняя страница получает строку запроса со значением OrderNo, равным null, то будет создан новый номер заказа. Это будет происходить при первом посещении домашней страницы, так как на сайт в начале не передается никакой строки запроса. Однако, если домашняя страница получает строку запроса с OrderNo, отличным от null (номер существует), то эта процедура пропускается. Это будет происходить при всех последующих возвращениях на домашнюю страницу с любой другой страницы сайта.

Конечно, если посетитель покидает сайт и возвращается, будет создаваться новый номер заказа, так как внешний сайт не передает строку запроса с OrderNo. Такая ситуация вызывает серьезные проблемы при отслеживании заказов покупателя. Если человек уже поместил товары в свою корзину покупателя под одним номером, а затем покинул сайт и вернулся, то нет удобного способа узнать, что это тот же самый человек, добавляющий новые товары в свою корзину покупателя. Фактически первый вариант выбора товаров будет потерян.

Можно обойти эту проблему, требуя от всех посетителей регистрации на сайте и присваивая им постоянный номер заказчика, который они используют во время всех посещений. Таким образом, номер заказчика будет всегда связан с одним и тем же человеком. Это неплохая идея, но требует более сложного программирования, чем то, что мы хотим здесь использовать. Для текущей задачи более удобным решение будет соединение номера заказа с объектом сеанса (Session).



Содержание раздела