Как сделать многостраничную html форму - Как сделать многостраничную html форму стр.2

Как сделать многостраничную html форму - Как сделать многостраничную html форму стр.2

Индекс материала
Как сделать многостраничную html форму
Как сделать многостраничную html форму стр.2
Как сделать многостраничную html форму стр.3
Все страницы

Основной способ применения скрытых полей состоит в том, чтобы включить их внутрь html формы.

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
<input type="hidden" name="username" value="<?php echo htmlentities($_GET['username'])?>" />

После того как эта html форма будет отправлена повторно, элемент $_GET['username'] будет содержать предыдущее значение, если только кто нибудь не поменяет его. Есть и более сложное, но безопасное решение – преобразовать переменные в строку с помощью PHP функции serialize(), вычислить секретный хеш из данных применив PHP функцию md5() и поместить обе части информации в форму. Затем в следующем запросе проверьте достоверность данных и выполните обратное преобразование.

Если данные не пройдут проверки на достоверность, вы будете знать, что кто то пытался модифицировать информацию. Кодирующая функция pc_encode(), показанная в примере ниже принимает данные для декодирования в виде массива.

Пример pc_encode():


  $secret = 'Foo25bAr52baZ';
    
  function pc_encode($data)
  {
    $data = serialize($data);
    $hash = md5($GLOBALS['secret'] . $data);
    return array($data, $hash);
  }

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

Пример pc_decode():


  function pc_decode($data, $hash)
  {
    if (!empty($data) && !empty($hash))
    {
      if (md5($GLOBALS['secret'] . $data) == $hash)
      {
         return unserialize($data);
      }
      else
      {
         error_log("Validation Error: Data has been modified");
         return false;
      } 
    }
  return false;
 }

Функция pc_decode() вновь создает хеш секретного слова с данными и сравнивает его со значением хеша из формы. Если они равны, то переменная $data считается достоверной и поэтому над ней выполняется обратное преобразование. Если проверка заканчивается неудачей, то функция записывает сообщение в журнал ошибок и возвращает false.



Добавить комментарий


Защитный код
Обновить



Кто на сайте
Сейчас 120 гостей онлайн