程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP中實現獲取IP和地理位置類分享

PHP中實現獲取IP和地理位置類分享

編輯:關於PHP編程

     這篇文章主要介紹了PHP中實現獲取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>
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved