• 技术文章 >后端开发 >php教程

    PHP中实现获取IP和地理位置类分享_php实例

    2016-06-07 17:14:11原创503
    发现之前有一个脚本没有写完,简单扩充了一下。
    获取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;
    }
    }

    ?>




    demo



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




    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php定时执行任务设置详解_php实例 下一篇:PHP四舍五入、取整、round函数使用示例_php实例
    千万级数据并发解决方案

    相关文章推荐

    • 100道常见PHP面试题(附解析),增强你的知识储备!• 深入浅析PHP文件包含漏洞• 如何编译PHP源代码介绍ZendEncode的安装方法我今天刚调试成功,不敢独享,拿来献宝_PHP教程• 第十节--抽象方法和抽象类--ClassesandObjectsinPHP510_PHP教程• PHP4 Session实现的迷你购物篮一_PHP教程
    1/1

    PHP中文网