Для того чтобы облегчить генерацию МБ5-подписей и элементов форм, создадим вспомогательную функцию, которую будем использовать для генерации цифровых подписей в HTML-формах. Эта функция имеет имя protect () и следующий синтаксис: protect($name, $value, $secret) где $name представляет атрибут NAME скрытого элемента HTML-формы, $value — текущее значение этого элемента, a $secret — секретную строку, используемую ддя генерации подписи. Эта функция возвращает строковое представление скрытых элементов формы — текущее значение и MDS-подпись. Атрибут NAME подписи MD5 будет определен этой функцией как <name>_checksum, где name — это имя текущей величины, которая будет передана в форму.
Код функции приведен в листинге 15.3.
НА ЗАМЕТКУ Забыли, что такое my_addslashes () и urlencode () ? Назначение этих функций рассмотрено в предыдущих разделах этой главы ("Работа с "магическими" кавычками" и "Преобразование и кодирование данных").
На практике функция protect () используется всегда, когда нужен скрытый элемент формы:
После обработки в PHP-сценарии в клиентском браузере будет отображен следующий HTML-код:
<FORM ACTION="process.php" METHOD=GET>
1 <INPUT TYPE="hidden" NAME="time" VALUE="1037613504">
<INPUT TYPE="hidden" NAME="time_checksum"
VALUE=n3b6f5fa33bb4fb99e68cfle3f5bf5478">
Введите сообщение (у вас есть максимум 5 минут):
<INPUT TYPE="text" NAME="mytext" VALUE="">
<INPUT TYPE="submit" Уа1ие="0тправить">
</FORM>
Теперь, проверив, что скрытый элемент времени соответствует МВБ-подписи, содержащейся в time_checksum (вместе с секретной строкой), можно быть уверенным в правильности данных.