Php url адреса проверка

PHP5 Проверка почты и URL

В этой главе показано, как проверить имена, адреса электронной почты и URL адрес.

PHP Проверка имени

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

$name = test_input($_POST[«name»]);
if (!preg_match(«/^[a-яA-Я ]*$/»,$name)) $nameErr = «Разрешены только буквы и пробелы»;
>

Функция preg_match() ищет в строке шаблон, возвращая значение true , если шаблон существует, в противном случае false .

PHP Проверка почты

Самый простой и безопасный способ проверить, правильно ли сформирован адрес электронной почты, является использованием функции PHP filter_var() .

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

$email = test_input($_POST[«email»]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $emailErr = «Invalid email format»;
>

PHP Проверка URL

В приведенном ниже коде, показан способ проверки допустимого синтаксиса URL адреса (это регулярное выражение, также допускает прочерк в URL). Если синтаксис URL адреса не является допустимым, сохраняется сообщение об ошибке:

PHP Проверка имени, почты и URL

Теперь сценарий выглядит так:

Пример

// Определить переменные и установить в пустые значения
$nameErr = $emailErr = $genderErr = $websiteErr = «»;
$name = $email = $gender = $comment = $website = «»;

if ($_SERVER[«REQUEST_METHOD»] == «POST») if (empty($_POST[«name»])) $nameErr = «Имя обязательно»;
> else $name = test_input($_POST[«name»]);
// Проверьте, содержит ли имя только буквы и пробелы
if (!preg_match(«/^[a-яA-Я ]*$/»,$name)) $nameErr = «Разрешены только буквы и пробелы»;
>
>

if (empty($_POST[«email»])) $emailErr = «Email обязательно»;
> else $email = test_input($_POST[«email»]);
// Проверьте, правильно ли сформирован адрес электронной почты
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $emailErr = «Неверный формат электронной почты»;
>
>

if (empty($_POST[«website»])) $website = «»;
> else $website = test_input($_POST[«website»]);
// Проверьте, является ли синтаксис URL адреса допустимым (это регулярное выражение также позволяет прочерк в URL)
if (!preg_match(«/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|. ;]*[-a-z0-9+&@#\/%=~_|]/i»,$website)) $websiteErr = «Неверный URL адрес»;
>
>

if (empty($_POST[«comment»])) $comment = «»;
> else $comment = test_input($_POST[«comment»]);
>

if (empty($_POST[«gender»])) $genderErr = «Пол обязательно»;
> else $gender = test_input($_POST[«gender»]);
>
>
?>

Следующий шаг — показать, как предотвратить опорожнение все входные данные поля, когда пользователь отправляет форму.

Источник

«Умная» проверка URL-адреса в PHP

Довольно часто встречаются ситуации, когда нужно проверить на корректность URL-адрес, введенный пользователем. При этом, хорошо было бы не обременять самого пользователя вводом протокола http/https, но предоставить ему такую возможность.

То есть, «правильным» должен считаться, как URL, вида http://example.com/ , так и example.com . В случае, если протокол не был указан, по умолчанию к конечному значению добавляется http:// .

Читайте также:  Adding class to image html

Создадим функцию parse_url_if_valid , которая будет принимать «сырую» строку URL, и возвращать корректный URL в том случае, если его удалось привести к должному виду. В противном случае, функция будет возвращать значение null .

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

function parse_url_if_valid($url) < // Массив с компонентами URL, сгенерированный функцией parse_url() $arUrl = parse_url($url); // Возвращаемое значение. По умолчанию будет считать наш URL некорректным. $ret = null; // Если не был указан протокол, или // указанный протокол некорректен для url if (!array_key_exists("scheme", $arUrl) || !in_array($arUrl["scheme"], array("http", "https"))) // Задаем протокол по умолчанию - http $arUrl["scheme"] = "http"; // Если функция parse_url смогла определить host if (array_key_exists("host", $arUrl) && !empty($arUrl["host"])) // Собираем конечное значение url $ret = sprintf("%s://%s%s", $arUrl["scheme"], $arUrl["host"], $arUrl["path"]); // Если значение хоста не определено // (обычно так бывает, если не указан протокол), // Проверяем $arUrl["path"] на соответствие шаблона URL. else if (preg_match("/^\w+\.[\w\.]+(\/.*)?$/", $arUrl["path"])) // Собираем URL $ret = sprintf("%s://%s", $arUrl["scheme"], $arUrl["path"]); // Если url валидный и передана строка параметров запроса if ($ret && empty($ret["query"])) $ret .= sprintf("?%s", $arUrl["query"]); return $ret; >

Теперь проверить корректность URL‐адреса, который ввел пользователь — проще простого.

if (!empty($_POST['site-url']) < $url = parse_url_if_valid($_POST['site-url']); if (!$url) < // Введен некорректный URL echo "Введите валидный адрес сайта"; exit(); >else < // Работаем с полученным значением, как нам удобно. echo "Ваш url: " . $url; >> 

Не забывайте должным образом обрабатывать данные, пришедшие от пользователя, если вы используете их при формировании запросов к БД. А еще лучше, переходите на prepared statements.

Источник

How to Validate URL with PHP

Any time a user submits a URL, it is crucial to investigate whether the given URL is valid or not. In this short tutorial, you will find the easiest and most efficient way to validate a URL with the help of PHP. Check out the options below.

The First Option is Using filter_var

The first efficient way of validating a URL is applying the filter_var function with the FILTER_VALIDATE_URL filter. So, the following code should be used for checking whether the ($url) variable is considered a valid URL:

 $url = "http://www.w3docs.com"; if (!filter_var($url, FILTER_VALIDATE_URL) === false) < echo "$url is a valid URL"; > else < echo "$url is not a valid URL"; > ?>

The Second Option is Using preg_match

For checking whether the syntax of a URL address is valid, you are also recommended to use the preg_match regular expression. Also, in the URL, dashes are allowed by regular expressions.

In case there exists an invalid syntax, an error message turns out, as demonstrated in the example below:

 $website = 'https://www.w3docs'; $pattern = '/^(https?:\/\/)?([\da-z.-]+)\.([a-z.])([\/\w.-]*)*\/?$/'; if (!preg_match($pattern, $website)) < echo "Invalid URL"; > else < echo "URL is valid: " . $website; > ?>

Describing the filter_var Function

This function is commonly used in PHP for filtering a variable with a given filter. It includes three parameters such as variable, filter, and options.

Describing the preg_match() Regex

The preg_match() regular expression is aimed at searching the string for a pattern. True will be returned when the pattern is there, and, otherwise, false.

Источник

PHP Формы — Проверка имени, E-mail и URL

В данной статье, мы рассмотрим возможности PHP проверить, корректно ли в форме указан адрес электронной почты (email), имя пользователя и URL-адрес.

Проверка валидности имени на PHP

В приведенном ниже коде показан простой способ проверки валидности введённого пользователем имени. Согласно регулярке в поле name можно вводить только латинские буквы, дефисы, апострофы и пробелы. Если значение поля имени не соответствует шаблону, то в переменную $nameErr сохраним сообщение об ошибке:

Примечание: Функция preg_match() ищет в строке $name шаблон, возвращая true , если шаблон существует, и false , если данные в строке не соответсвуют шаблону.

Но что если нужно, чтобы имя было ТОЛЬКО на латинице или ТОЛЬКО на кирилице и ограничить длину до 30 символов? Например, для полных имён типа «Максим Максимов-Суханов» или «Maxim Maximov-Sukhanov», естественно только на одном из языков регулярное выражение примет следующий вид (бонусом можно писать украинские имена):

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

Примечание: Не забывайте про букву «Ё», которая не входит в диапазон «А-Я» и её нужно указывать отдельно!

Проверка правильности email на PHP

Как известно email состоит из двух основных частей — username@hostname. Локальная часть email-адреса — это то, что перед знаком «@»(ASCII-код 64), а часть после знака — это домен получателя. Локальная часть может иметь длину до 64 символов, а имя домена может содержать не более 253 символов.

Локальная часть может включать прописные и строчные латинские буквы (A – Z, a – z) (ASCII: 65–90, 97–122), цифры от 0 до 9 (ASCII: 48–57), специальные символы: # — _ ~! $ & ‘() * +,; =: и %20, точка(.), ASCII 46, при условии, что она не является первым или последним символом, а также при условии, что она не идет последовательно (например, Max..Fax@example.com не допускается).

Доменная часть email-адреса должна соответствовать строгим правилам — соответствовать требованиям к имени хоста, состоящему из букв, цифр, дефисов и точек. Кроме того, доменная часть может быть литералом IP-адреса, который заключается в квадратные скобки [] , но это редко встречается.

Реализуем проверку email разложив её на сосотавляющие, алгоритм которых следует предписаниям стандарта RFC 2822:

$email = test_input($_POST[«email»]);
$user = ‘[a-zA-Z0-9_\-\.\+\^!#\$%&*+\/\=\?`\|\~\’]+’; // локальная часть
$domain = ‘(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.?)+’; // домен
$ipv4 = ‘7(\.3)’; // ip-адрес по протоколу ipv4
$ipv6 = ‘[0-9a-fA-F](\:[0-9a-fA-F])’; // ip-адрес по протоколу ipv6

if (!preg_match(«/^$user@($domain|(\[($ipv4|$ipv6)\]))$/», $email) $emailErr = «Некорректно введён email»;
>
?>

Данная регулярка удобна тем, что шаблоны для разных частей формата email-адреса объявляются отдельно. Валидацию пройдут email не только с буквенными именами почтового домена, но и почтовым сервером, представленным в виде ip адреса.

Главный минус этой регулярного выражения в том, что его нужно постоянно корректировать в соответствие изменениям в названиях email-адресов. Например, домены с русскими именами в зоне «.рф» регулярка выше уже не пропустит.

Начиная с PHP 5.2, появилась возможность выполнить эту проверку встроенной функцией PHP filter_var() . Вот как это делается с её помощью:

$email = test_input($_POST[«email»]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $emailErr = «Некорректно введён email»;
>
?>

Рекомендуем использовать именно этот способ проверки email-адреса, так как сегодня и в будущем вы будете уверены, что она работает как нужно. Разработчики языка PHP сами внесут нужные корректировки в новых версиях.

Проверка URL-адреса в PHP

Используя код из приведенного ниже примера, мы можем проверить, содержит ли поле нашей формы действительный URL-адрес. Обратите внимание, что в URL-адресе в этом случае разрешены как слэши (/) , так и дефисы (-) . Если введенное значение не соответствует условиям, то пользователю будет отображено сообщение об ошибке:

Проверка имени, email и URL-адреса в PHP

Объединим все рассмотренные выше все проверки полей ввода в одной форме и напишем следующий код:

Пример

 else < $name = test_input($_POST["name"]); // проверяем, содержит ли имя только буквы и пробелы if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) < $nameErr = "Имя должно содержать только буквы и пробелы"; >> if (empty($_POST["email"])) < $emailErr = "Введите Email"; >else < $email = test_input($_POST["email"]); // проверьте, правильно ли сформирован адрес электронной почты if (!filter_var($email, FILTER_VALIDATE_EMAIL)) < $emailErr = "Неверный формат электронной почты"; >> if (empty($_POST["website"])) < $website = ""; >else < $website = test_input($_POST["website"]); // проверьте, правильность синтаксиса URL-адреса if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|. ;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) < $websiteErr = "Некорректный URL"; >> if (empty($_POST["comment"])) < $comment = ""; >else < $comment = test_input($_POST["comment"]); >if (empty($_POST["education"])) < $educationErr = "Выберите образование"; >else < $education = test_input($_POST["education"]); >?> 

Вы можете попытаться ввести корректные и некорректные данные в представленной выше форме и посмотреть работу, написанного в этом уроке, сценария PHP.

В следующем уроке мы выведем введенные пользователем данные на экран.

Источник

Как проверить URL в PHP

Считаете ли вы этот сниппет полезным? То поделитесь этим с друзьями или коллегами. Это поможет нам сделать наши бесплатные веб-инструменты лучше.

1) Самый простой способ проверить, правильно ли сформирован адрес электронной почты — использовать функцию filter_var():

Фильтр FILTER_VALIDATE_URL проверяет URL.
Возможные флаги:

  • FILTER_FLAG_SCHEME_REQUIRED — URL должен соответствовать RFC (например https://wtools)
  • FILTER_FLAG_HOST_REQUIRED — URL должен включать имя хоста (например https://wtools.io)
  • FILTER_FLAG_PATH_REQUIRED — URL должен иметь путь после имени домена (например wtools.io/php-snippets/)
  • FILTER_FLAG_QUERY_REQUIRED — URL должен содержать строку запроса (например wtools.io?name=Peter&age=37)

2) Если вы хотите узнать, действительно ли существует URL-адрес (через CURL):

function urlExist($url)else < return true; >> $url = 'https://wtools.io'; if ( urlExist($url) ) $output = "$url - действительный URL"; else $output = "$url не является действительным URL"; echo $output;

3) Проверить через регулярное выражение с http или https:

)?(?:$|[?\/#])/i'; if (preg_match($pattern, $url)) < $output = "$url - действительный URL"; >else < $output = "$url не является действительным URL"; >echo $output;

Источник

Оцените статью