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排序算法系列之插入排序详解

插入排序 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个...

PHP Static延迟静态绑定用法分析

本文实例讲述了PHP Static延迟静态绑定用法。分享给大家供大家参考,具体如下: PHP5.3以后引入了延迟静态绑定static,它是为了解决什么问题呢?php的继承模型中有一个存在...

PHP实现数组转JSon和JSon转数组的方法示例

本文实例讲述了PHP实现数组转JSon和JSon转数组的方法。分享给大家供大家参考,具体如下: 数组转JSon数据: $array_1 = array(); //一维数组 $arra...

最新的php 文件上传模型,支持多文件上传

复制代码 代码如下:<?php class UploadModel { protected $keys; protected $err = array(); protected $...

php通过COM类调用组件的实现代码

在PHP 4.2.0 至 4.2.3中,可以使用w32api_register_function 函数调用外部的DLL,前提是需要在php.ini中打开扩展的php_w32api.dll...