PHP中实现获取IP和地理位置类分享
PHP中实现获取IP和地理位置类分享
发布时间:2016-12-29 来源:查字典编辑
摘要:发现之前有一个脚本没有写完,简单扩充了一下。获取IP使用的是经典的逻辑,地理定位使用的是SINA的通用接口。使用方法详见源码:复制代码代码如...

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

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

使用方法详见源码:

复制代码 代码如下:

<?php

/*

* 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<$n;$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;

}

}

?>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf8">

<title>demo</title>

<script type="text/javascript">

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);

</script>

</head>

<body>

<h1>CODE:</h1>

<h2>GETIP</h2>

<p>'ONLYIP'=>true,'ECHO'=>true</p>

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

<P>'ONLYIP'=>true,'FORMAT'=>'JSON','ECHO'=>true</P>

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

<h2>GET Location</h2>

<p>'ECHO'=>true</p>

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

<p>'FORMAT'=>'JSON','ECHO'=>true</p>

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

</body>

</html>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类