php教程

php判断IP地址是否合法

我的站长站 2023-10-18 人阅读

这几天我的站长站在开发一个API接口,为了API接口安全运行,就需要判断用户提交IP是不是真实用户,防止用户勿输入或捣乱。

下面是我的站长站在网上收集的几种PHP判断IP地址是否合法的方法,有正规,函数和数组的方法。

正则表达式

<?php
$ip = '192.168.0.5';
//正规表达式
$regexp = "/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/";
if (preg_match($regexp, $ip)) {
    echo '是合法的IP地址';
} else {
    echo '不是合法的IP地址';
}
?>

注:以上php代码,只能对ipv4的IP地址进行检测,如果是IPV6的IP地址,请参考下面的几个方法。

数组法

<?php
$ip = '192.168.0.5';
//检测IP地址的函数
function is_ip($ip){
    $arr = explode('.',$ip);
    if(count($arr) != 4){
        return false;
    }else{
        for($i = 0;$i < 4;$i++){
            if(($arr[$i] < 0) || ($arr[$i] > 255)){
                return false;
            }
        }
    }
    return true;
}
//函数调用
var_dump(is_ip($ip));
//打印结果:bool(true)
?>

代码说明:

1、将IP地址转换成数组

2、如果数组的元素的个数不为4,则不是合法的IP地址

3、数组每个元素的值,如果小于0,大于255,则不是合法的IP地址

filter_var() 函数法

filter_var() 为php内置的函数,可以用它来判断一个IP地址的合法性!

例1:php判断一个IP地址是否合法

<?php
if(filter_var($ip, FILTER_VALIDATE_IP)) {
// true
}else {
// false
}
?>

例2:php判断IP地址是否为IPV4的IP地址

<?php
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
// true
}else {
// false
}
?>

例3:php判断IP地址是否为合法的IPV6地址

<?php
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)) {
// true
}else {
// false
}
?>

例4:php判断是否为合法的公共IPV4地址,并排除私有的IP地址

<?php
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE)) {
// true
}else {
// false
}
?>

例5:php判断是否为公共的 IPV4 IP地址或 IPV6 IP地址

<?php
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
// true
}else {
// false
}
?>


相关推荐
  • PHP判断
  • PHP自动识别判断电脑端和手机端代码

    通过判断浏览器的模式来进行页面读取,自动识别判断电脑端和手机端,根据结果跳转访问不同的页面,最后的业务逻辑自己改。代码如下:<?phpfunction is_mobile_request() {$_SERVER[&#39;ALL_HTTP&#39;] = isset($_SERVER[&#39;ALL_HTTP&#39;]) ? $_SERVER[&...

    php教程 23 1年前
  • PHP判断帝国cms字段加样式

    PHP判断字段加样式主要提供给新手朋友学习,老鸟就不用看了,很简单。<?php if($picfbl}echo&#39;<style>&#39;;if($zilei==!"0"){echo &#39;.leisx ul li a span i{background-position:0 -107px;}&#39;;}if($color==!"0"){echo &#39;.color-table li a...

    帝国cms教程 222 5年前
  • 利用get_headers函数判断链接是否有效或失效

    PHP判断链接是否有效或失效的方法代码,get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组。如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断远程文件是否存在)。函数定义array get_he...

    php教程 132 4年前
最新更新