PHP实现获取客户端IP并获取IP信息

yipeiwu_com6年前PHP代码库

代码很简洁,功能很实用,这里就不多废话了,直接奉上:

复制代码 代码如下:

<?php
/**
 * 获取客户端IP
 * @param  integer $type 返回类型 0:string,1:long
 * @return string|long
 */
function getClientIp($type = 0) {
    $ip = NULL;
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        $pos = array_search('unknown',$arr);
        if(false !== $pos) unset($arr[$pos]);
        $ip  = trim($arr[0]);
    }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }elseif (isset($_SERVER['REMOTE_ADDR'])) {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    $long = sprintf("%u", ip2long($ip));
    $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);
    return $ip[$type];
}
/**
 * 获取IP信息
 * @param  string|long $ip  IP地址
 * @return array
 */
function getIpInfo($ip)
{
    if (is_long($ip)) {
        $ip = long2ip($ip);
    }
    $api = 'http://ip.taobao.com/service/getIpInfo.php';
    $ret = file_get_contents($api . '?ip=' . $ip);
    $ret = json_decode($ret, true);
    if ($ret['code'] == 0) {
        return $ret['data'];
    }
    return array();
}

以上就是本文的全部内容了,希望大家能够喜欢。

相关文章

PHP has encountered an Access Violation 错误的解决方法

搭建wordpress的时候发觉居然会报这种错误,网上的解决方案都是千篇一律的复制粘贴,都是关于eaccelerator的设置问题,我很奇怪我并没有安装这个扩展啊?不过倒是安装过APC扩...

php进程间通讯实例分析

本文实例讲述了php进程间通讯的方法。分享给大家供大家参考,具体如下: php单进程单线程处理批量任务太慢了,受不鸟了,但是php不能多线程,最终选择了多进程处理批量任务. php多进程...

用PHP调用Oracle存储过程的方法

但是使用存储过程至少有两个最明显的优点:速度和效率。使用存储过程的速度显然更快。在效率上,如果应用一次需要做一系列sql操作,则需要往返于php与oracle,不如把该应用直接放到数据库...

php使用Jpgraph绘制简单X-Y坐标图的方法

php使用Jpgraph绘制简单X-Y坐标图的方法

本文实例讲述了php使用Jpgraph绘制简单X-Y坐标图的方法。分享给大家供大家参考。具体实现方法如下: <?php include ("src/jpgraph.p...

php打开远程文件的方法和风险及解决方法

PHP有一个配置选项叫allow_url_fopen,该选项默认是有效的。它允许你指向许多类型的资源,并像本地文件一样处理。例如,通过读取URL你可以取得某一个页面的内容(HTML),看...