家宽动态IP,限制php网站程序只能在家访问。
家里的IP已经通过群晖DDNS绑定了域名,通过域名获取IP,然后限制IP访问。

//特定IP访问
if (getenv("HTTP_CLIENT_IP")){
    $ip = getenv("HTTP_CLIENT_IP");
} else if (getenv("HTTP_X_FORWARDED_FOR")){
    $ip = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("REMOTE_ADDR")){
    $ip = getenv("REMOTE_ADDR");
} else {
    $ip = "unknow";
}

//允许访问的ip
$ddnsip = gethostbyname("ddns.abc.com");//获取动态IP
$allowIP = array($ddnsip); //多个IP用,隔开 array('192.168.2.*','127.0.0.1','192.168.2.49');

//ip拆分成数组
$check_ip_arr = explode('.', $ip);
if (!in_array($ip, $allowIP)) {
    $bl = false;
    foreach ($allowIP as $val) {
        if (strpos($val, '*') !== false) {
            //有*号替代符
            $arr = array();
            $arr = explode('.', $val);
            $bl = true;
            //用于记录循环检测中是否有匹配成功的
            for ($i = 0; $i < 4; $i++) {
                if ($arr[$i] != '*') {
                    //不等于* 就要进来检测,如果为*符号替代符就不检查
                    if ($arr[$i] != $check_ip_arr[$i]) {
                        $bl = false;
                        break;
                        //终止检查本个ip 继续检查下一个ip
                    }
                }
            }
            if ($bl) {
                //如果是true则终止匹配
                break;
            }
        }
    }

    if (!$bl) {
        echo '您的IP地址为:' .$ip.'。<br/>对不起,您所在的网络环境无法访问此站点。<br/>如有任何疑问请联系管理员。';
        exit();
    }
}

参考资料:
PHP获取域名及域名IP的方法
PHP 限制特定IP访问网站

Last modification:November 22, 2021
如果觉得我的文章对你有用,请随意赞赏