ip地理位置 php,PHP中实现获取IP和地理位置类分享

发现之前有一个脚本没有写完,简单扩充了一下。

获取IP使用的是经典的逻辑,地理定位使用的是SINA的通用接口。

使用方法详见源码:

/*

* GET LOCATION BY SINA IP INTERFACE

*

*              @SOULTEARY 2013.04.14

*/

classIP

{

private $args=array();

function__construct()

{

$this->args=self::init_args(func_get_args());

$ip=self::GetIP();

$ret=preg_match_all('/(\d+\.){3}\d+/i',$ip,$result);

if(!$ret){

returnfalse;

}else{

$result=$result[0];

}

if(isset($this->args['ONLYIP'])&&$this->args['ONLYIP']==true){

if(isset($this->args['FORMAT'])&&$this->args['FORMAT']=='JSON'){

$result=json_encode($result);

}else{

$result=implode(',',$result);

}

if(isset($this->args['ECHO'])&&$this->args['ECHO']==true){

echo$result;

returntrue;

}else{

return$result;

}

}else{

$apiURL='http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip='.$result[0];

if(isset($this->args['FORMAT'])&&$this->args['FORMAT']=='JSON'){

$apiURL.='&format=json';

$return=$this->ipCURL($apiURL);

}else{

$return=$this->ipCURL($apiURL);

$return=iconv("GBK//IGNORE","UTF-8",$return);

}

if(isset($this->args['ECHO'])&&$this->args['ECHO']==true){

echo$return;

returntrue;

}else{

return$return;

}

}

}

public functioninit_args($args)

{

$result=array();

for($i=0,$n=count($args);$i

$result=self::associative_push($args[$i],$result);

}

return$result;

}

public functionassociative_push($arr,$tmp)

{

if(is_array($tmp)){

foreach($tmpas$key=>$value){

$arr[$key]=$value;

}

return$arr;

}

returnfalse;

}

public functionGetIP()

{

if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&$_SERVER['HTTP_X_FORWARDED_FOR']&&strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'],'unknown')){

return$_SERVER['HTTP_X_FORWARDED_FOR'];

}elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){

return$_SERVER['REMOTE_ADDR'];

}

}

private functionipCURL($url)

{

$ch=curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_HEADER,0);

ob_start();

curl_exec($ch);

curl_close($ch);

$result=ob_get_contents();

ob_end_clean();

return$result;

}

}

?>

demo

varip="<?php new IP(array('ONLYIP'=>true, 'ECHO'=>true));?>";

vardata=<?php newIP(array('FORMAT'=>'JSON','ECHO'=>true));?>;

varresult='';

for(oo indata){

result+=oo+':'+data[oo]+"\n";

}

alert(result+ip);

CODE:

GETIP

'ONLYIP'=>true,'ECHO'=>true

<?phpnewIP (array('ONLYIP'=>true,'ECHO'=>true));?>

'ONLYIP'=>true,'FORMAT'=>'JSON','ECHO'=>true

<?phpnewIP (array('ONLYIP'=>true,'FORMAT'=>'JSON','ECHO'=>true));?>

GET Location

'ECHO'=>true

<?phpnewIP (array('ECHO'=>true));?>

'FORMAT'=>'JSON','ECHO'=>true

<?php newIP(array('FORMAT'=>'JSON','ECHO'=>true));?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值