根据ip地址来获取用户所在的地区,这个需要借助一个外部api或一个数据库来记录ip地址是哪里的,下面我总结一些常用的方法给各位参考。
先用php获取本机的ip,再用php的curl函数来获取用户的详细地区.下面来看一下代码;
代码如下 复制代码
/*
* 这个函数是获取客户端和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;
}
方法一,利用qqwry.dat ip库,我们只胖乎乎
用简单的办法。
使用示例
示例一:
代码如下 复制代码
$iplocation = new iplocation();
$client = $iplocation->getlocation();
print_r($client);
示例二:
代码如下 复制代码
$iplocation = new iplocation('../qqwry/qqwry.dat');
$client = $iplocation->getlocation('115.148.101.72');
print_r($client);
具体的ip库与iplocation类文件这里不介绍了大家百度搜索吧。
方法二,利用api接口
示例一,
代码如下 复制代码
/**
* 获取ip地区
* enter description here ...
* @param unknown_type $ip
*/
function getarea($ip){
$url = http://ip168.com/ip/?ip=.$ip;
$contents = file_get_contents($url);
// preg_match_all('/
)/',$contents,$rs);
preg_match_all('|本站主数据:.*
|',$contents,$rsr);
$rsr[0][0] = str_replace(本站主数据:, , $rsr[0][0]);
$rsr[0][0] = str_replace(
, , $rsr[0][0]);
return $rsr[0][0];
}
示例二,
下面这个函数是用php的curl函数从网路上获取详细地区
代码如下 复制代码
function lazdf($ip){
$curl= curl_init();
curl_setopt($curl,curlopt_url,http://www.ip138.com/ips138.asp?ip=.$ip);
curl_setopt($curl,curlopt_returntransfer,1);
$ipdz=curl_exec($curl);
curl_close($curl);
preg_match(/
(.*?)/i,$ipdz,$jgarray);
preg_match(/本 www.111cn.net 站主数据:(.*)/i, $jgarray[1],$ipp);return
欢迎来自 .$ipp[1]. 的朋友!
;}
echo lazdf(getip());//输出ip
欢迎来自长沙地区的朋友