Implementation of obtaining IP and geographical location sharing in PHP, IP geographical location_PHP tutorial

WBOY
Release: 2016-07-13 10:07:11
Original
1111 people have browsed it

Realize obtaining IP and geographical location sharing in PHP, ip geographical location

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:

Copy code 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/955974.htmlTechArticlePHP中实现获取IP和地理位置类分享,ip地理位置 发现之前有一个脚本没有写完,简单扩充了一下。 获取IP使用的是经典的逻辑,地理定位使...
Related labels:
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