代码逻辑思路
同时判断IP地址和用户语言可以更好的限制指定国家用户访问网站,大大限制的dai理用户破解方法。
PHP判断用户的IP地址,就需要先获取到用户的IP,然后利用第三方IP库,来获取到IP地址的归属地,最后就是判断IP归属地,判断是否需要限制访问了。
判断用户语言就非常简单了,只需获取到浏览器的HTTP_ACCEPT_LANGUAGE即可。
获取用户IP和语言代码:
$ipaddress = $_SERVER['REMOTE_ADDR'] == '::1' ? '127.0.0.1' : $_SERVER['REMOTE_ADDR']; $lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
第三方IP库获取归属地代码:
$login_addr_arra = json_decode(file_get_contents('https://apis.map.qq.com/ws/location/v1/ip?output=json&key=2J5BZ-V6JK4-SHSUT-XGMGV-VRHM7-TBFKU&ip='.$ipaddress));
判断限制访问代码:
$country = $login_addr_arra->result->ad_info->nation; if((!empty($country) && $country == '中国') || strstr($lang, 'zh')) { header("ip地址为中国"); echo 'ip地址为中国'; exit; }
完整代码
$ipaddress = $_SERVER['REMOTE_ADDR'] == '::1' ? '127.0.0.1' : $_SERVER['REMOTE_ADDR']; $lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); $login_addr_arra = json_decode(file_get_contents('https://apis.map.qq.com/ws/location/v1/ip?output=json&key=2J5BZ-V6JK4-SHSUT-XGMGV-VRHM7-TBFKU&ip='.$ipaddress)); $country = $login_addr_arra->result->ad_info->nation; if((!empty($country) && $country == '中国') || strstr($lang, 'zh')) { header("ip地址为中国"); echo 'ip地址为中国'; exit; }