获取ip,获取客户端浏览器,获取客户端访问操作系统,获取客户端访问设备

复制代码
/**
     * 获取ip
     */
    public static function getIp()
    {
        if (getenv('HTTP_CLIENT_IP')) {
            $ip = getenv('HTTP_CLIENT_IP');
        } else if (getenv('HTTP_X_FORWARDED_FOR')) {
            $ip = getenv('HTTP_X_FORWARDED_FOR');
        } else if (getenv('REMOTE_ADDR')) {
            $ip = getenv('REMOTE_ADDR');
        } else {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
        $ips = explode(',', $ip);
        if (count($ips) > 1) {
            $ip = $ips[0];
        }
        return $ip;
    }
/**
     * 获取客户端浏览器
     */
    public static function getBrowse()
    {
        if (isset($_SERVER['HTTP_USER_AGENT'])) {
            $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
        } else {
            $userAgent = 'unknown';
        }
        $browser = 'other';
        if (preg_match('/MSIE/i', $userAgent)) {
            $browser = 'ie';
        } else if (preg_match('/Firefox/i', $userAgent)) {
            $browser = 'Firefox';
        } else if (preg_match('/Chrome/i', $userAgent)) {
            $browser = 'chrome';
        } else if (preg_match('/Safari/i', $userAgent)) {
            $browser = 'safari';
        } else if (preg_match('/Opera/i', $userAgent)) {
            $browser = 'opera';
        }
        return $browser;
    }
/**
     * 获取客户端访问操作系统
     */
    public static function getOs()
    {
        if (isset($_SERVER['HTTP_USER_AGENT'])) {
            $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
        } else {
            $userAgent = 'unknown';
        }

        $os = 'web';
        if (preg_match('/iphone/i', $userAgent)) {
            $os = 'iphone';
        } else if (preg_match('/android/i', $userAgent)) {
            $os = 'android';
        } else if (preg_match('/ipad/i', $userAgent)) {
            $os = 'ipad';
        } else if (preg_match('/win/i', $userAgent)) {
            $os = 'windows';
        } else if (preg_match('/mac/i', $userAgent)) {
            $os = 'mac';
        } else if (preg_match('/linux/i', $userAgent)) {
            $os = 'linux';
        } else if (preg_match('/unix/i', $userAgent)) {
            $os = 'unix';
        } else if (preg_match('/bsd/i', $userAgent)) {
            $os = 'bsd';
        }
        return $os;
    }

    /**
     * 获取客户端访问设备
     */
    public static function getDevice()
    {
        if (isset($_SERVER['HTTP_USER_AGENT'])) {
            $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
        } else {
            $userAgent = 'unknown';
        }
        $device = 'pc';
        if (preg_match('/iphone/i', $userAgent)) {
            $device = 'phone';
        } else if (preg_match('/android/i', $userAgent)) {
            $device = 'phone';
        } else if (preg_match('/ipad/i', $userAgent)) {
            $device = 'pad';
        } else if (preg_match('/win/i', $userAgent)) {
            $device = 'pc';
        } else if (preg_match('/mac/i', $userAgent)) {
            $device = 'pc';
        } else if (preg_match('/linux/i', $userAgent)) {
            $device = 'pc';
        } else if (preg_match('/unix/i', $userAgent)) {
            $device = 'pc';
        } else if (preg_match('/bsd/i', $userAgent)) {
            $device = 'pc';
        }
        return $device;
    }
复制代码

 

posted @   一个人的孤独自白  阅读(486)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示