php获取客户端的ip地址

 PHP基础  2020-12-07  admin  712  961

php获取客户端的ip地址

/**
 * 获取客户端IP地址
 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
 * @param boolean $adv 是否进行高级模式获取(有可能被伪装)
 * @return mixed
 */
function ip($type = 0, $adv = false)
{
    $type = $type ? 1 : 0;
    static $ip = null;
    if (null !== $ip) {
        return $ip[$type];
    }

    if ($adv) {
        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(current($arr));
        } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        } elseif (isset($_SERVER['REMOTE_ADDR'])) {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
    } elseif (isset($_SERVER['REMOTE_ADDR'])) {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    // IP地址合法验证
    $long = sprintf("%u", ip2long($ip));
    $ip = $long ? [$ip, $long] : ['0.0.0.0', 0];
    return $ip[$type];
}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

php获取客户端的ip地址 —— code.cent123.com

相关推荐


点名工具,抽奖软件

点名工具,抽奖软件

Android各个版本与API等级之间的对应关系

API等级 1 - 3:Android 1.0 (Astro,也被称为“铁臂阿童木”)Android 1.1 (Petit Four,即“花色小蛋糕”)Android 1.5 (Cupcake)API等级 4:Android 1.6 (Donut)API等级 5 - 7:Android 2.0/2.0.1/2.1 (Éclair)API等级 8:Android 2.2/2.2.3 (Froyo)A

Systemd Web 管理系统:简化服务管理

# Systemd Web Systemd Web 是一个 Systemd 的 Web UI 管理系统,通过直观的界面和易用的操作,让用户能够轻松地管理 Linux 系统和服务。该项目旨在简化 Systemd 的使用,使得无论是专业的系统管理员还是普通的用户,都能够方便地对系统进行操作。 ## [github地址] (https://github.com/topascend/systemd

GoFrame 框架中使用 mqtt 协议通讯

GoFrame 框架中使用 mqtt//SPDX-License-Identifier:MIT //SPDX-FileCopyrightText:2022mochi-mqtt,mochi-co //SPDX-FileContributor:mochi-co packagemqtt import( "flag" "gfmqtt/internal/