php根据ip获取地域,php获取访问用户的ip

发布时间:2022-11-25

本文目录一览:

  1. php根据ip地址查地区
  2. 如何进行PHP查询ip所在地
  3. php获取了ip地址,用php怎么获取ip的地理位置?请大虾赐教!
  4. php如何实现通过ip获取地理位置
  5. php获取用户ip和地区

php根据ip地址查地区

自己以前做过一个程序 根据discuz里面的ip查询改的

/**
* ip地址所属地区计算
* 修改自 discuz
* 使用dicuz tinyipdata数据文件
* 将一些英文提示修改为汉字
* $is_simple true的话显示到市 false显示到网通电信等等
******/
function convertip($ip,$is_simple=true,$ipfile='include/data/ip.dat') {
    $return = '';
    if( !file_exists($ipfile) ) $ipfile = '../'.$ipfile;
    if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) {
        $iparray = explode('.', $ip);
        if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) {
            return '局域网';
        } elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {
            return 'ERR';
        } elseif($is_simple) {
            return change_simply_area(convertip_tiny($ip, $ipfile));
        } else {
            return convertip_tiny($ip, $ipfile);
        }
    }
}
/**
* 从ip文件得到ip所属地区
*
* 过滤掉了具体的位置(如 网通/电信/**网吧) 基本到市
***/
function convertip_tiny($ip, $ipdatafile) {
    static $fp = NULL, $offset = array(), $index = NULL;
    $ipdot = explode('.', $ip);
    $ip = pack('N', ip2long($ip));
    $ipdot[0] = (int)$ipdot[0];
    $ipdot[1] = (int)$ipdot[1];
    if($fp === NULL && $fp = @fopen($ipdatafile, 'rb')) {
        $offset = unpack('Nlen', fread($fp, 4));
        $index = fread($fp, $offset['len'] - 4);
    } elseif($fp == FALSE) {
        return '- Invalid IP data file';
    }
    $length = $offset['len'] - 1028;
    $start = unpack('Vlen', $index[$ipdot[0] * 4] . $index[$ipdot[0] * 4 + 1] . $index[$ipdot[0] * 4 + 2] . $index[$ipdot[0] * 4 + 3]);
    for ($start = $start['len'] * 8 + 1024; $start < $length; $start += 8) {
        if ($index{$start} . $index{$start + 1} . $index{$start + 2} . $index{$start + 3} == $ip) {
            $index_offset = unpack('Vlen', $index{$start + 4} . $index{$start + 5} . $index{$start + 6} . "\x0");
            $index_length = unpack('Clen', $index{$start + 7});
            break;
        }
    }
    fseek($fp, $offset['len'] + $index_offset['len'] - 1024);
    if($index_length['len']) {
        return mb_convert_encoding(fread($fp, $index_length['len']),'utf-8','gb2312'); //将读出的gb编码数据转成utf-8并返回
    } else {
        return '未知';
    }
}
function change_simply_area($area) {
    $tmp = explode(' ',$area); //过滤掉一些具体信息
    return $tmp[0];
}

里面那个ipfile你可以去下载一个discuz 在 ipdata目录里面有wry.dat的文件就是了 其实这个就是网上用的最多的那个纯真版数据库 很多显示ip的qq用的也是那个 这两个函数的原型参考 discuz 里面 include\misc.func.php 共同学习进步 :)

如何进行PHP查询ip所在地

/**
* 根据IP地址取得地理位置
*/
function get_ip_arr()
{
    $ip=file_get_contents("");
    preg_match_all("/\"(.*)\"/",$ip,$arr);
    return $arr;
}

//返回一个数组,包括地区、IP等信息,自行获取即可。

php获取了ip地址,用php怎么获取ip的地理位置?请大虾赐教!

用纯真ip数据库啊,这里有个资料是介绍php操作纯真ip数据库的,是原查询吧query8.com里提取出来的,用时先去网上搜纯真ip数据库下载,查询吧php版读取纯真ip数据库源码

php如何实现通过ip获取地理位置

通过ip地址定位接口,调用的百度地图接口,每人每天有30000次免费调用机会。。 你可以调用我的接口,但不要多次调用。最好是按照我这篇文章中的方法自己搭建一个接口,毕竟我的接口很有可能无法实现你的要求。 著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:caijun
链接:
来源:

php获取用户ip和地区

function getIp() {
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP");
    else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR");
    else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR");
    else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR'];
    else $ip = "unknown";
    return $ip;
}

使用这个可以获取id,至于要把ip转换从真实地址可以使用新浪有道提供的api或者用本地的QQWry.Dat文件这个文件自己去下载,不过要经常更新