Как проверить, является ли вводимый пользователем IP-адрес действительным или нет?


Я хочу проверить, является ли введенный ввод действительным IP-адресом или нет. Я хотел бы получить конкретную функцию, которая поможет мне проверить ввод данных пользователями.

Author: hakre, 2011-06-02

4 answers

filter_var($ip, FILTER_VALIDATE_IP)

Http://www.php.net/filter_var

 67
Author: deceze, 2011-06-02 06:23:15

// Usually you'd get the value from $_POST or $_GET
$ip = "10.3.1.5";
if(!filter_var($ip, FILTER_VALIDATE_IP)) {
   echo "Not a valid IP address!";
}

Вы можете изменить это, отфильтровав IP-адреса IPv4 и IPv6 и исключив частные и зарезервированные IP-адреса.

Http://www.php.net/manual/filter.filters.validate.php

 11
Author: chiborg, 2011-10-18 08:10:22

С помощью preg_match();

function checkIPAddress($ipAddress) 
{
    return preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/', $ipAddress);
}
 0
Author: Aniket Singh, 2015-08-03 09:45:32

В дополнение к ответу, данному deceze, используйте FILTER_FLAG_NO_PRIV_RANGE и FILTER_FLAG_NO_RES_RANGE для обработки частных и зарезервированных ip-адресов.

filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)

Ссылка, полученная из руководства http://php.net/manual/en/filter.filters.flags.php

 0
Author: Akintunde-Rotimi, 2018-08-09 10:24:16