Implementing sharing of IP and geographical location classes in PHP_PHP Tutorial

WBOY
Release: 2016-07-13 10:07:31
Original
1166 people have browsed it

The implementation of obtaining IP and geographical location sharing in PHP

This article mainly introduces the implementation of obtaining IP and geographical location sharing in PHP. The geographical positioning in this article uses SINA Common interface, friends in need can refer to it

I found that there was an unfinished script before, so I simply expanded it.
Obtaining IP uses classic logic, and geolocation uses SINA's universal interface.

See the source code for usage details:

The code is as follows:


/*
* 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;
}
}

?>




demo



CODE:



GETIP



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



true,'ECHO'=>true));?>



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



true,'FORMAT'=>'JSON','ECHO'=>true));?>



GET Location



'ECHO'=>true



true));?>



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



'JSON','ECHO'=>true));?>



www.bkjia.comtruehttp://www.bkjia.com/PHPjc/955834.htmlTechArticlePHP中实现获取IP和地理位置类分享 这篇文章主要介绍了PHP中实现获取IP和地理位置类分享,本文地理定位使用的是SINA的通用接口,需要的朋友...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!