下載 GeoIP 的 PHP 文件geoip.inc
http://sjolzy.cn/php/GeoIP/bak/geoip.inc
下載GeoIp 的數據庫文件Geoip.dat
https://sjolzy.cn/php/GeoIP/bak/GeoIP.dat.gz
php使用代碼
限制某個地區ip訪問可以使用地區編號進行判斷。
<?php // 引入 PHP 庫文件 include ("geoip.inc"); $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD); // 獲取國家編號 $countryCode=geoip_country_code_by_addr($geoData,$_SERVER['REMOTE_ADDR']); // 獲取國家名稱 $countryName =geoip_country_name_by_addr($geoData,$_SERVER['REMOTE_ADDR']); // 關閉本地數據庫 geoip_close($geoData); //判斷用戶是否是來自新西蘭編號NZ,或澳洲編號AU if ($countryCode=="NZ" ||$countryCode=="AU") { exit(); }
獲取用戶相對比較真實的ip
<?php
//引入 PHP 庫文件 include ('geoip.inc.php'); // 封裝getIP來獲取用戶真實IP function getIp(){ if(!empty($_SERVER["HTTP_CLIENT_IP"])) { $cip = $_SERVER["HTTP_CLIENT_IP"]; } else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) { $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else if(!empty($_SERVER["REMOTE_ADDR"])) { $cip = $_SERVER["REMOTE_ADDR"]; } else { $cip = ''; } preg_match("/[\d\.]{7,15}/", $cip, $cips); $cip = isset($cips[0]) ? $cips[0] : 'unknown'; unset($cips); return $cip; } $ip=getIp();
$geoData = geoip_open('geoip.dat', "GEOIP_STANDARD"); // 獲取國家 IP $countryCode=geoip_country_code_by_addr($geoData,$ip); // 獲取國家名稱 $countryName =geoip_country_name_by_addr($geoData,$ip); // 關閉本地數據庫 geoip_close($geoData); //判斷用戶是否是來自新西蘭編號NZ,或澳洲編號AU if ($countryCode=="NZ" ||$countryCode=="AU") { exit(); }