php - IP 地址验证帮助

标签 php validation ip-address

我正在使用浏览时遇到的这个 IP 验证功能,它一直运行良好,直到今天我遇到了问题。

出于某种原因,该函数不会将此 IP 验证为有效:203.81.192.26

我不太擅长正则表达式,所以如果能提供任何可能出错的帮助,我将不胜感激。

如果您有其他功能,请将其发布给我,我将不胜感激。

函数代码如下:

public static function validateIpAddress($ip_addr)
{
    global $errors;

    $preg = '#^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}' .
            '(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$#';

    if(preg_match($preg, $ip_addr))
    {
        //now all the intger values are separated
        $parts = explode(".", $ip_addr);

        //now we need to check each part can range from 0-255
        foreach($parts as $ip_parts)
        {
            if(intval($ip_parts) > 255 || intval($ip_parts) < 0)
            {
                $errors[] = "ip address is not valid.";
                return false;
            }

            return true;
        }

        return true;
    } else {
        $errors[] = "please double check the ip address.";
        return false;
    }
}

最佳答案

我更喜欢描述 here 的简单方法.出于安全目的,这应该被认为是有效的。尽管确保从 $_SERVER['REMOTE_ADDR'] 获取它,但任何其他 http header 都可以被欺骗。

function validateIpAddress($ip){
    return long2ip(ip2long($ip)))==$ip;
}

关于php - IP 地址验证帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3039524/

相关文章:

php - 如何解决并发问题?

forms - In Play 2.4.0 如何在嵌套表单的多字段约束中命名字段?

php - file_get_contents 相当于 gzip 文件

javascript - 在 javascript 中设置时捕获 HTML 错误输入验证(显示警告)或之前检查验证

windows - VBS : Check IP address and open URL (but only once)

ip-address - IP地址SQL注入(inject)

tsql - T-Sql : check if IP matches netmask

php - 在查询数据库或数据库处理之前检查输入的长度(太大)是否值得?

PHP - 注册表显示没有错误,但不保存在数据库中

PHP 和 MYSQL : Is my system safe?