Телефон: +7 (926) 245-03-63

PHP средства защиты форм от ввода плохих данных

php, защита форм, проверка email

Содержание

Защита данных

До сих пор мы защищали PHP скрипт от некорректных данных, переданных из формы. Но так же можно применить и средства, предлагаемые PHP, для защиты форм.

Наверняка многим знакома проблема флуда (для этого обычно используется простая программа, зачастую написанная на том же PHP). Думаю, вам будет не очень приятно обнаружить в своей гостевой книге пару тысяч сообщений, зачастую оскорбительного характера? Самый простой способ решения этой проблемы - небольшая картинка с кодом и поле для ввода этого кода (как на крупных почтовых сервисах). Думаете это очень сложно? Наоборот - это дело 5 минут. Итак, приступим.

Пример скрипта на php для генерации защитного изображения (captcha)

Листинг файла code.php, генерирующего изображение со случайным чисом

<?php
session_start();
$сode=rand(100000,999999);
session_register('сode');
$Image=imageCreateFromPng('code.png');
$color=imagecolorAllocate($Image, 254, 165, 65);
settype($сode,'string');
imageString($Image, 3, 30, 3, $сode, $color);
Header('Content-type: image/png');
imagePng($Image);
imageDestroy($Image);
?>

В файле code.png у нас храниться чистый (или с необходимым фоном) PNG файл размерами 100 на 20 пикселей. Случайное шестизначное число записывается в переменную $code, сохраняется в сессии, и накладывается на картинку. Данную картинку можно вывести в браузер следующим образом:

<img src="code.php" width="100" height="20" title="Код" />

Полее подробно о создании php captcha читайте по ссылке.

Далее в форму добавляем поле, в которое пользователь введет вышеуказанный и генерированный код:

<input type="text" name="code2" />

И далее, после отправки пользователем формы PHP скрипту нам останется сравнить код хранящийся, в сессии ($HTTP_SESSION_VARS['code']), с кодом, переданным пользователем ($HTTP_POST_VARS['code2']) и в случае несовпадения не принимать данные формы и вернуть ее пользователю. Таким образом, программа «флудер» просто не сможет считать код с картинки.

Методы POST и GET - принципиальные различия

Как мы видим из примера нашей формы, данные PHP скрипту передаются методом POST. Обратите внимание на предыдущий абзац: переменная code2 могла бы быть доступна в PHP скрипте под именем $code2, но тогда ее можно было бы передать и методом GET, просто набрав в адресной строке браузера test.php?code2=123456. Чтобы лишить пользователя этой возможности необходимо получать переменные из массива $HTTP_POST_VARS, предварительно проверяя, была ли эта переменная передана методом POST:

if (!isset($HTTP_POST_VARS['code2'])) { действие_если_переменная_не_существует }

Этот момент касается абсолютно всех переменных, передаваемых скрипту методом POST от формы.

Заключение

Вот собственно и все. Теперь ваша форма будет более надежной.

Также хотел бы отметить, что не смотря на большое количество информации в Интернет, о том как защищать ту или иную форму и различными средствами, основная путаница идет именно из-за не знания основ как правильно и где именно требуется употреблять те или иные кавычки. Поэтому настоятельно рекомендую прочитать статью по ссылке о разнице ковычек. Это актуально как для php, так и для javascript.

Также рекомендуется для прочтения как проверяются корректность данных на в форме средствами javascript?

Интересное в интернете: Сеть салонов: цветная цифровая печать. Все виды полиграфических услуг.