Php filter var filter validate email

Php filter var filter validate email

Example #1 Validating email addresses with filter_var()

$email_a = ‘joe@example.com’ ;
$email_b = ‘bogus’ ;

if ( filter_var ( $email_a , FILTER_VALIDATE_EMAIL )) echo «Email address ‘ $email_a ‘ is considered valid.\n» ;
>
if ( filter_var ( $email_b , FILTER_VALIDATE_EMAIL )) echo «Email address ‘ $email_b ‘ is considered valid.\n» ;
> else echo «Email address ‘ $email_b ‘ is considered invalid.\n» ;
>
?>

The above example will output:

Email address 'joe@example.com' is considered valid. Email address 'bogus' is considered invalid.

Example #2 Validating IP addresses with filter_var()

if ( filter_var ( $ip_a , FILTER_VALIDATE_IP )) echo «IP address ‘ $ip_a ‘ is considered valid.» ;
>
if ( filter_var ( $ip_b , FILTER_VALIDATE_IP )) echo «IP address ‘ $ip_b ‘ is considered valid.» ;
>
?>

The above example will output:

IP address '127.0.0.1' is considered valid.

Example #3 Passing options to filter_var()

$int_a = ‘1’ ;
$int_b = ‘-1’ ;
$int_c = ‘4’ ;
$options = array(
‘options’ => array(
‘min_range’ => 0 ,
‘max_range’ => 3 ,
)
);
if ( filter_var ( $int_a , FILTER_VALIDATE_INT , $options ) !== FALSE ) echo «Integer A ‘ $int_a ‘ is considered valid (between 0 and 3).\n» ;
>
if ( filter_var ( $int_b , FILTER_VALIDATE_INT , $options ) !== FALSE ) echo «Integer B ‘ $int_b ‘ is considered valid (between 0 and 3).\n» ;
>
if ( filter_var ( $int_c , FILTER_VALIDATE_INT , $options ) !== FALSE ) echo «Integer C ‘ $int_c ‘ is considered valid (between 0 and 3).\n» ;
>

$options [ ‘options’ ][ ‘default’ ] = 1 ;
if (( $int_c = filter_var ( $int_c , FILTER_VALIDATE_INT , $options )) !== FALSE ) echo «Integer C ‘ $int_c ‘ is considered valid (between 0 and 3).» ;
>
?>

The above example will output:

Integer A '1' is considered valid (between 0 and 3). Integer C '1' is considered valid (between 0 and 3).

Источник

Проверка данных с помощью PHP фильтров

Валидация данных является неотъемлемой частью работы с формами. Не только недопустимые отправленные данные могут привести к проблемам безопасности, но также могут сломать вашу веб-страницу. Сегодня мы рассмотрим, как удалить недопустимые символы и проверить данные с помощью функции «filter_var».

Посмотрите приведенный ниже пример . Пользователь ввел текст «I don’t have one» в качестве домашней страницы. Если эти данные должны были быть введены в базу данных, а затем получены в качестве ссылки, ссылка будет нарушена.

Большинство людей склонны думать о валидации данных как о чрезвычайно утомительном процессе, где нужно:

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

Есть очевидные проблемы с перечисленным выше:

К счастью, начиная с версии 5.2, PHP включил отличную функцию, называемую filter_var , которая устраняет трудности проверки данных.

filter_var в действии

filter_var будет делать, оба действия, и санитизировать и проверять данные. В чем разница между ними?

  • Санитизация удалит из данных какой-либо некорректный символ.
  • Проверка будет определять, находятся ли данные в надлежащей форме.

Примечание: зачем санитизировать, а не просто проверять? Возможно, пользователь случайно набрал неправильный символ или, возможно, ошибка была из-за плохих копирования и вставки. Очищая данные, вы берете на себя ответственность за ошибку пользователя.

Как использовать filter_var

Использование filter_var невероятно просто. Это просто функция PHP, которая принимает две части данных:

Например, приведенный ниже код удалит все теги HTML из строки:

$new_string = filter_var($string, FILTER_SANITIZE_STRING); 
// $new_string is now "Hello, World!" 

Вот еще один пример — на этот раз сложнее. Приведенный ниже код гарантирует, что значение переменной является допустимым IP-адресом:

$valid_ip = filter_var($ip, FILTER_VALIDATE_IP); 
$valid_ip = filter_var($ip, FILTER_VALIDATE_IP); 

Вот так просто использовать filter_var . Полный список всех правил, которые вы можете использовать, смотрите в конце этого руководства.

Пример санитизации

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

echo filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); 
echo filter_var($_POST['homepage'], FILTER_SANITIZE_URL); 
 name="form1" method="post" action="form-sanitize.php"> 
 type="text" name="email" value=" echo $_POST['email']; ?>" size="50"/> 

 type="text" name="homepage" value=" echo $_POST['homepage']; ?>" size="50" /> 

Используя константы FILTER_SANITIZE_EMAIL и FILTER_SANITIZE_URL , определенные PHP, функция знает, какие символы являются некорректными.

Пример валидации

Просто потому, что данные очищены, не гарантируется, что они правильно отформатированы. В приведенном ниже примере данные не нуждались в санитизации, но очевидно, что вход пользователя не является адресом электронной почты или URL-адресом.

Чтобы обеспечить правильное форматирование данных, их необходимо проверить.

$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); 
if (filter_var($email, FILTER_VALIDATE_EMAIL))  
echo "$email is a valid email address.

"
;
echo "$email is NOT a valid email address.

"
;
$homepage = filter_var($_POST['homepage'], FILTER_SANITIZE_URL); 
if (filter_var($homepage, FILTER_VALIDATE_URL))  
echo "$homepage is a valid URL.

"
;
echo "$homepage is NOT a valid URL.

"
;
 name="form1" method="post" action="form-validate.php"> 
 type="text" name="email" value=" echo $_POST['email']; ?>" size="50"/> 

 type="text" name="homepage" value=" echo $_POST['homepage']; ?>" size="50" /> 

Теперь, когда данные были проверены, вы можете быть уверены, что представленная информация — именно то, что вы ищете.

Все вместе: Форма отправки электронной почты

Теперь, когда данные очистки и проверки были рассмотрены, мы будем использовать эти навыки для быстрой отправки электронной почты. Это ни в коем случае не будет иметь качества готового продукта — например, никакая форма не должна требовать домашней страницы, но она будет работать идеально для этого урока. Форма будет содержать 4 части информации:

Мы будем очищать и проверять все 4 части данных и отправлять их по электронной почте, только если все они корректны. Если что-либо не прошло проверку или какие-либо поля пустые, форма будет представлена пользователю вместе со списком элементов для исправления. Мы также вернем обработанные данные пользователю, если он не знает, что определенные символы являются неразрешенными.

Шаг 1 — Создание формы

Для первого шага просто создайте элемент формы с 5 полями: для перечисленных выше и кнопки отправки:

 name="form1" method="post" action="form-email.php"> 

Источник

Ещё раз о filter var / PHP. Особенности и фичи

Очень часто приходится сталкиваться с простейшей задачей — валидацией данных из формы или любых других источников (кукисы, заголовок запроса, etc.) И каждый раз 95% разработчиков городят какие-то неимоверные велосипеды (регулярные выражения, «уникальные» алгоритмы хеширования паролей, etc). И каждый раз мне приходится рассказывать о такой невероятно полезной и нужной функции php — filter_var!

Итак, встречаем, встроенная функция валидации данных.

Эта замечательная функция появилась уже давно, в PHP 5.2.0, но до сих пор, очень малый процент разработчиков применяют её, предпочитая свои велосипеды. И это очень зря, ведь Вы используете готовые фреймворки, ORM и другие инструменты? Так почему Вы не валидируете данные встроенными методами?

Фильтры валидации данных

  • FILTER_VALIDATE_BOOLEAN — проверяет, что значение является корректным булевым значением. Использует неявное приведение типов. Примеры валидных значений: «1», «true», «on», «yes».
  • FILTER_VALIDATE_EMAIL — проверяет, что значение является корректным email.
  • FILTER_VALIDATE_FLOAT — проверяет, что значение является корректным числом с плавающей точкой.
  • FILTER_VALIDATE_INT — проверяет, что значение является корректным целым числом. Дополнительно можно проверить входит ли значение в определенный диапазон.
  • FILTER_VALIDATE_IP — проверяет, что значение является корректным ip-адресом (v4 или v6). Дополнительно можно проверить, что IP соответствует протоколу IPv4 или IPv6, а также отсутствие вхождения в частные или зарезервированные диапазоны.
  • FILTER_VALIDATE_REGEXP — Проверяет значение на соответствие regexp, Perl-совместимому регулярному выражению.
  • FILTER_VALIDATE_URL — проверяет, что значение является корректным url адресом (в соответствии с RFC 2396).
  • FILTER_VALIDATE_INT
    • Числа +0 и -0 не пройдут проверку на целые числа, но пройдут ее на числа с плавающей точкой.
    • Корректная ссылка может не содержать HTTP-протокол , т.е. необходима еще одна проверка, определяющая наличие необходимого протокола у ссылки, например, ssh:// или mailto:.
    • Функция работает только с ASCII-ссылками, таким образом, интернациональные доменные имена (содержащие не-ASCII символы) не пройдут проверку.
    • Доменная зона не проверяется на реальность, так что адрес вида [email protected] пройдет валидацию (привет зонам верхнего уровня аля .yandex).

    Примеры

     [email protected]', FILTER_VALIDATE_EMAIL); // [email protected] filter_var('d#fh$df%[email protected]', FILTER_VALIDATE_EMAIL); // d#fh$df%[email protected] то есть верно! filter_var('[email protected]', FILTER_VALIDATE_EMAIL); // [email protected] то есть верно! filter_var('имя-на-русском@сайтец.рф', FILTER_VALIDATE_EMAIL); // false filter_var('@site.b', FILTER_VALIDATE_EMAIL); // false // FILTER_VALIDATE_FLOAT filter_var(1, FILTER_VALIDATE_FLOAT); // 1 filter_var(0, FILTER_VALIDATE_FLOAT); // 0 filter_var(1.1, FILTER_VALIDATE_FLOAT); // 1.1 filter_var(true, FILTER_VALIDATE_FLOAT); // 1 filter_var( '1,1', FILTER_VALIDATE_FLOAT, array('options' => array('decimal' => ',')) ); // 1.1 filter_var('1,1', FILTER_VALIDATE_FLOAT); // false filter_var('1,000,000', FILTER_VALIDATE_FLOAT); // false filter_var('1,000,000', FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND); // 1000000 // FILTER_VALIDATE_INT filter_var(1, FILTER_VALIDATE_INT); // 1 filter_var(0, FILTER_VALIDATE_INT); // 0 filter_var(true, FILTER_VALIDATE_INT); // 1 filter_var('3', FILTER_VALIDATE_INT); // 3 filter_var('3.2', FILTER_VALIDATE_INT); // false filter_var( 22, FILTER_VALIDATE_INT, array('options' => array('min_range' => 30)) ); // false filter_var( 32, FILTER_VALIDATE_INT, array('options' => array('min_range' => 30)) ); // 32 // FILTER_FLAG_ALLOW_OCTAL filter_var(032, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_OCTAL); // 26 // FILTER_FLAG_ALLOW_HEX filter_var(0x32, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX); // 50 // FILTER_VALIDATE_IP filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP); // 127.0.0.1 filter_var('10.0.0.0', FILTER_VALIDATE_IP); // 10.0.0.0 // FILTER_FLAG_IPV6 filter_var('10.0.0.0', FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); // false filter_var( '2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d', FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ); // 2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d // FILTER_FLAG_NO_PRIV_RANGE filter_var('10.0.0.0', FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE); // false filter_var('33.35.73.255', FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE); // 33.35.73.255 // FILTER_FLAG_NO_RES_RANGE filter_var('0.0.0.0', FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE); // false filter_var('10.0.0.0', FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE); // 10.0.0.0 // FILTER_VALIDATE_REGEXP filter_var( 'hello world', FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/^h/is')) ); // hello world filter_var( 'world hello', FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/^h/is')) ); // false filter_var( 'hello world', FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/5+/is')) ); // false filter_var( '22 543 24', FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/8+/is')) ); // 22 543 24 // FILTER_VALIDATE_URL filter_var('http://somesite.com', FILTER_VALIDATE_URL); // http://somesite.com filter_var('http://какой-то-сайт.рф', FILTER_VALIDATE_URL); // false filter_var('http://#%$%#^^.com', FILTER_VALIDATE_URL); // false filter_var('somesite.com', FILTER_VALIDATE_URL); // false filter_var('torrent://somesite.com', FILTER_VALIDATE_URL); // torrent://somesite.com // FILTER_FLAG_PATH_REQUIRED filter_var( 'http://somesite.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED ); // false filter_var( 'http://somesite.com/test', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED ); // http://somesite.com/test // FILTER_FLAG_QUERY_REQUIRED filter_var( 'http://somesite.com', FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED ); // false filter_var( 'http://somesite.com?test', FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED ); // http://somesite.com?test // FILTER_FLAG_PATH_REQUIRED | FILTER_FLAG_QUERY_REQUIRED filter_var( 'http://somesite.com/test?test', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED | FILTER_FLAG_QUERY_REQUIRED ); // http://somesite.com?test ?> 

    Источник

    Читайте также:  Css for shadow div
Оцените статью