PHP, проверка вводимых пользователем данных

Никогда не стоит доверять вводимым пользователем данным, ибо их некорректность зачастую может привести не просто к ошибке, но в худшем случае и даже к крушению сервера базы данных.
Конечно, ввод некорректных данных не всегда производится с целью взлома сайта. Другой очень частой причиной является просто невнимательность пользователя.
Здесь я опишу методы проверки вводимых данных на корректность.

Длина переменной

Если от пользователя требуется ввести текст не более некоторого количества символов, можно, конечно, задать свойство maxlength у соответствующего input'а, но этот вариант не безопасен, ибо данные могут придти и в обход формы.
Поэтому для этих целей лучше использовать функцию substr:

$variable = substr($HTTP_POST_VARS['variable'], 0, 10);

Адрес Email

Прежде, чем отправлять на указанный пользователем email-адрес какие-либо письма, вмолне целесообразным будет проверить его валидность.
Сделать это можно так:

if(!preg_match("/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/", $email))
 die("некорректный email-адрес");

Числовые данные

Если пользователем передаются числовые данные, то перед использованием рекомендуется их проверить на то, действительно-ли они являются числами.
Делается это с помощью функции intval:

$myint = intval($_POST['myint']);

Спецсимволы в строках

Перед вставкой принятых от пользователя строковых данных в БД их следует проверить на наличие спецсимволов, и экранировать их.
Лучше всего для этого использовать функцию mysql_escape_string:

$sql = "INSERT INTO table VALUES \"" . mysql_escape_string($text) . "\"";

PS: Всё это основные методы защиты, которые должны обязательно использоваться при разработке PHP-скриптов. На форуме CodeNet этому вопросу посвящена целая ветка. Если для Вас важна степень защищенности Вашего сайта, то настоятельно рекомендую ознакомиться с этой веткой.

Поблагодарить автора

3 Responses to PHP, проверка вводимых пользователем данных

  1. Здравствуйте.

    У меня к Вам большая просьба, пожалуйста, поясните — в какое место на странице нужно вставить функцию проверки e-mail на валидность?

    Очень нужная деталь, а то задолбали уже липовые ящики при комментировании...

    Спасибо, надеюсь на реальную помощь. И, к стати, какой у Вас плагин стоит для preview? Интересная реализация...

  2. В функцию, обрабатывающую POST-данные от Вашей формы для комментария.

    Но этот код проверяет только то, действительно-ли введенный в поле текст является email-адресом. Проверить, действительно-ли существует этот адрес он не может.

  3. Проверка, email-адреса на валидность:

    $email = explode ('@', $email);

    $emailhost = $email[1];

    if (!dns_get_mx ($emailhost, $mxhostsarr))

    echo 'Invalid email address';

Оставить комментарий

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>