Теперь, когда мы познакомились с реализацией cookie-наборов, посмотрим, как применить эти знания для создания cookie-наборов, используемых внутри сценариев. Наиболее очевидным методом установки cookie-набора в PHP-коде является создание заголовка Set-Cookie с помощью PHP-функции header ()
Как уже говорилось, существует несколько методов использования cookie-наборов в PHP-сценариях. В этом разделе рассматриваются два метода (использование HTML и HTTP). Установка cookie-наборов на клиентской стороне с помощью, например JavaScript, рассматриваться не будет, cookie-наборы посылаются клиенту путем спецификации одного или нескольких заголовков Set-Cookie, когда браузер запрашивает файл у Web-сервера во время выполнения запроса GET или POST. Синтаксис HTTP-заголовка Set-Cookie имеет следующий вид: Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN NAME; secure
Несмотря на то что HTTP — очень полезный протокол, он известен в компьютерном мире как протокол, не поддерживающий состояния. Если это утверждение пока вам не понятно, не огорчайтесь. В отличие от ваших любимых программ, таких как текстовые процессоры, РНР не имеет средств для запоминания последнего запроса.
Прежде чем рассматривать строки кода, обсудим концепцию создания многоцелевого сценария для проверки форм. Перед тем как создавать сценарий, определим цели: • Универсальность при проверке и обработке любых данных формы. • Разделение кода для проверки и кода для представления формы. • Простота использования при обработке любых типов HTML-форм.
Обратите внимание, что в листинге 5.11 комментариями выделены "пользовательская" и проверочная части. Как уже упоминалось, одной из задач сценария проверки является отделение кода представления формы от проверочного кода. Взглянув на листинг 5.11, легко заметить, что весь код можно разделить на три отдельных файла
В простейшем случае проверка и обработка форм — это не более чем работа с суперглобальными массивами ($_GET и $_POST). Однако для более сложных форм требуется проверка данных. Как уже говорилось, передача данных формы без соответствующей проверки — плохая и опасная практика. За исключением простейших случаев проверка форм обычно выполняется с помощью стандартных выражений, приведенных в листинге 5.6.
Рассмотрим реальный пример. В листинге 5.5 с использованием функций protect () и validate () создается чувствительная ко времени форма, которую пользователь должен отправить в течение 5 минут.
После отправки формы нужно убедиться в правильности данных, проверив все цифровые подписи. Для того чтобы это сделать, необходимо создать функцию validate ().
Для того чтобы облегчить генерацию МБ5-подписей и элементов форм, создадим вспомогательную функцию, которую будем использовать для генерации цифровых подписей в HTML-формах.
Средством для проверки данных в рассматриваемом случае является алгоритм MD5. Этот алгоритм используется для создания дайджеста сообщения (вид цифровой подписи) из переданных ему данных. Как и подпись человека, цифровая подпись, создаваемая алгоритмом MD5, уникальна для строки.