Archive for the ‘Усовершенствованные технологии использования форм’ Category

Функция validate ()

После отправки формы нужно убедиться в правильности данных, проверив все цифровые подписи. Для того чтобы это сделать, необходимо создать функцию validate (). Эта функция имеет следующий синтаксис:
validate(Sinput, Ssecret)
где Sinput является ссылкой на соответствующий суперглобаги>ный массив ($_GET, S_POST и так далее), Ssecret представляет секретную строку, используемую для генерации подписи (в данном случае, строку определенную как PROTECTED_KEY). В огличие от protect (), котора (more…)

Tags: , ,

Related posts

Усовершенствованные технологии использования форм

В главе 4 были рассмотрены HTML-формы, и было показано, как их использовать для ввода данных в PHP-сценарий. В этой главе делается небольшое отступление от рассмотрения связей типа “HTML-форма/РНР” и вводится набор методов и концепций, которые можно непосредственно применять к PHP-сценариям. В настоящей главе предлагаются пути решения таких задач, как защита данных, передаваемых в HTML-формы (скрытые поля), шифрование и преобразование данных, а также несколько эффективных методов проверки данных, получаемых из форм.
Следует отметить, что эта глава не претендует на полноту освещения проблемы, поскольку (more…)

Tags: , ,

Related posts

Преобразование и кодирование данных

Часто, особенно при передаче данных между РНР и внешними источниками (такими как HTML-формы или базы данных), необходимо кодировать или преобразовать данные в требуемый формат. Этот раздел посвящается функциям РНР, предназначенным для этих целей. В отличие от функций addslashes {) и stripslashes (), рассмотренных в предыдущем разделе, эти функции не имеют связи с конфигурационными директивами и поэтому требуют особого внимания.Кодирование и декодирование данных для URL
Часто при пересылке данных формы или в GET-запросе к серверу (то есть, в части URL) необходимо преобразовать символы, имеющие специальное значение в HTTP-запросе {не-алфавитно-цифровые символы), в допустимый формат, В НТТР-эапросах таким форматом является шестнадцатеричный ASCII-код символа, имеющий префикс i. Исключение составляет символ пробела, представляемый знаком +, Предположим, что нужно передать переменную myvar, имеющую значение / value, в другой PHP-сценарий. Приведенный ниже код, используемый для этой цели, работать не будет:
http://myserver.com/myscript,php?myvar=/ value
Для правильной передачи значения myvar потребуется преобразовать его в кодированное представление строки. Поскольку шестнадцатеричным значением символа / является 0×2F, а пробел представляется знаком +, правильный URL-адрес будет иметь вид:
http://myserver.com/myscript.php?myvar=%2F+value
Поскольку преобразовывать вручную каждый не-алфавитно-цифровой символ — весьма утомительное занятие, в РНР имеется функция urlencode (), которая преобразовывает все не-алфавитно-цифровые {за исключением символов -, _ и не имеющих смысла в протоколе HTTP) в кодированную форму. Синтаксис этой функции имеет вид:
urlencode($string)
где $string — это строка для кодирования. Функция возвращает значение строки в закодированном виде. Функция rawurlencode {) подобна urlencode (), но она не преобразует символ пробела в +. Вместо этого она преобразует пробел в шестиадцатеричное значение 0×20 (.20), Когда РНР передает параметры, принятые от HTTP-запроса (независимо от типа запроса—GET, POST или cookie-набор), он автоматически декодирует их в исходные значения. Однако для случаев, когда нужно вручную декодировать эти значения, в РНР предназначена функция urldecode (), имеющая следующий синтаксис:
urldecode($enc_string)
где $enc_string — это закодированная строка для декодирования. Эта функция возвращает декодированную строку. Как и в случае с urlencodef), существует функция rawurldecode (), предназначенная для шестнадцатеричного представления пробела.
кодирование и декодирование двоичных данных
При кодировании двоичных данных полезна функция base64_encode (), имеющая следующий синтаксис:
base64_encode(5data)
где $data — данные для кодирования. Функция возвращает данные в переменной $data в формате base64. Аналогично РНР позволяет декодировать принятые в формате base64 данные в исходный формат с помощью функции base64_decode (), синтаксис которой показан ниже:
base64_decode($enc_string);
где $enc_string — строка в формате base64, предназначенная для декодирования. Функция возвращает данные в исходном формате.

Tags: , ,

Related posts

Преобразование в HTML-объекты

Несмотря на то что кодирование данных при передаче между HTML-формами, базами данных и так далее чрезвычайно полезно, в РНР поддерживается несколько более простых (и очень удобных) преобразований. В качестве иллюстрации предположим, что нужно отобразить в браузере следуюотую строку:
<А HREF=”example.php”>Пример НТМЬ-дескрипгора
Хитрость здесь в том, что нужно отобразить эту строку в браузере клиента так, как она выглядит в примере (а не как гиперссылку). Для таких целей, когда нужно отобразить символы, имеющие особое значение в HTML, существуют HTML-объекты. Эти объекты я (more…)

Tags: , ,

Related posts

Сериализация

Несмотря на то что сериализация не очень часто используется в формах (гораздо чаще она применяется в базах данных), она может оказаться весьма полезной для преобразования в последовательный вид переменных РНР. Что же такое сериализация? Это процесс, посредством которого сложная структура данных, например, массив или объект {который не может быть передан в форму или базу данных непосредственно), преобразуется в строку с помощью некоторого обратимого метода. В то время как для сериализации сложных структур данных обычно создается собственная функция, се-риализацию любой переменной РНР можно осуществить с помощью функции serialize {). Ее синтаксис выглядит следующим образом: (more…)

Tags: , ,

Related posts

Целостность данных формы

В этом разделе обсуждаются методы, которые могут быть использованы для защиты данных, передаваемых в формы. Часто при работе с формами нужно передать данные в форме скрытых полей. Представим, например, что форма, с которой вы работаете, требует передачи введенной в нее информации на сервер в течение пяти минут. Если не использовать механизм сеансов (рассматривается в главе 6), то единственным доступным методом будет создание скрытого элемента формы, содержащего время создания формы, как показано в листинге 5.2.
Листинг 5.2. Пример формы, чувствительной к времени заполнения__ (more…)

Tags: , ,

Related posts

Целостность данных формы

В этом разделе обсуждаются методы, которые могут быть использованы для защиты данных, передаваемых в формы. Часто при работе с формами нужно передать данные в форме скрытых полей. Представим, например, что форма, с которой вы работаете, требует передачи введенной в нее информации на сервер в течение пяти минут. Если не использовать механизм сеансов (рассматривается в главе 6), то единственным доступным методом будет создание скрытого элемента формы, содержащего время создания формы, как показано в листинге 5.2.
Листинг 5.2. Пример формы, чувствительной к времени заполнения__
(more…)

Tags: , ,

Related posts

Защита скрытых элементов

Средством для проверки данных в рассматриваемом случае является алгоритм MD5. Этот алгоритм используется для создания дайджеста сообщения (вид цифровой подписи) из переданных ему данных. Как и подпись человека, цифровая подпись, создаваемая алгоритмом MD5, уникальна для строки. Несмотря на то что существует небольшая вероятность (1 из 3.40282е+38) того, что цифровые подписи двух строк совпадут, для практического использования можно считать, что оprotect,Tabini,validateprotect,Tabini,validateprotect,Tabini,validateни уникальны.
Цифровые подписи, создаваемые алгоритмом MD5, не только уникальны, но и (more…)

Tags: , ,

Related posts

Функция protect ()

Для того чтобы облегчить генерацию МВ5-подписей и элементов форм, создадим вспомогательную функцию, которую будем использовать для генерации цифровых подписей в HTML-формах. Эта функция имеет имя protect |) и следующий синтаксис:
protect(Sname, Svalue, Ssecret)
где Sname представляет атрибут МАМЕ скрытого элемента HTML-формы, Svalue — текущее значение этого элемента, a Ssecret — секретную строку, используемую ддя генерации подписи (more…)

Tags: , ,

Related posts

Массив Sprotected

Когда функция validate!) вызывается, ее первая задача — убедиться, что переменная $input действительно является массивом. На следующем шаге функция определяет, какие поля нужно проверять. Определив это, функция ищет правильный (по контрольной сумме) элемент protected^list в массиве Sinput. Если этот элемент найден и соответствует своей MDir-подписи, массив реконструируется с использованием функции unserialize (). В случае, если элемент protected_list не содержится в данных формы, для динамического создания массива используется простое стандартное выражение по правилам, рассмотренным ранее. В (more…)

Tags: , ,

Related posts