最新PHP和JS获取访客真实IP和访客所在省市区方法…
php只有通过内置函数获得ip却不能获得地区地址,只能通过其他第三方的接口。之前用php获取访客IP,根据访客IP调用新浪和淘宝的接口来获取访客所在地区,后来发现新浪和淘宝的接口都关闭了,大部分免费的接口都不能用了,只能花钱购买。现在分享一个免费的获得访客ip和地区的接口,搜狐的,但是是js方式的,具体用法如下:
第一步、在页面上直接引用搜狐的js:
<script type="text/javascript" src="//pv.sohu.com/cityjson?ie=utf-8"></script>
第二步、引用搜狐的js后会获得json数据returnCitySN变量进行获取里边的IP和访客所在地区即可,返回的数据如下:
var returnCitySN = {"cip": "116.235.177.18", "cid": "310109", "cname": "上海市虹口区"};
通过returnCitySN.cip或者returnCitySN['cip']获取IP地址,通过该形式获取其他参数如cname为地区,获得参数后然后通过ajax回传到后台。
var ip = returnCitySN.cip;
var area = returnCitySN.cname;
扩展:PHP获取访客真实IP方法如下
function getIP(){
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
$ip = getenv("HTTP_CLIENT_IP");
} else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
$ip = getenv("REMOTE_ADDR");
} else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
$ip = $_SERVER['REMOTE_ADDR'];
} else {
$ip = "unknown";
}
return ($ip);
}