家里的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(); }}
复制代码 |