<?php /** * * 根据sina api获取用户的IP地址及地理信息 * eg: Guest::Instance()->getBrowser(); * */ class Guest { private static $_instance; private $ipUrl = 'http://1212.ip138.com/ic.asp'; private $ipApiUrl = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip='; /** * 单例模式 * @return map */ public static function Instance() { if (!self::$_instance instanceof self) { self::$_instance = new self; } return self::$_instance; } //获得访客浏览器类型 function getBrowser() { if (!empty($_SERVER['HTTP_USER_AGENT'])) { $br = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/MSIE/i', $br)) { $br = 'MSIE'; } elseif (preg_match('/Firefox/i', $br)) { $br = 'Firefox'; } elseif (preg_match('/Chrome/i', $br)) { $br = 'Chrome'; } elseif (preg_match('/Safari/i', $br)) { $br = 'Safari'; } elseif (preg_match('/Opera/i', $br)) { $br = 'Opera'; } else { $br = 'Other'; } return $br; } else { return "获取浏览器信息失败!"; } } //获得访客浏览器语言 function getLang() { if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; $lang = substr($lang, 0, 5); if (preg_match("/zh-cn/i", $lang)) { $lang = "简体中文"; } elseif (preg_match("/zh/i", $lang)) { $lang = "繁体中文"; } else { $lang = "English"; } return $lang; } else { return "获取浏览器语言失败!"; } } //获取访客操作系统 function getOs() { if (!empty($_SERVER['HTTP_USER_AGENT'])) { $OS = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/win/i', $OS)) { $OS = 'Windows'; } elseif (preg_match('/mac/i', $OS)) { $OS = 'MAC'; } elseif (preg_match('/linux/i', $OS)) { $OS = 'Linux'; } elseif (preg_match('/unix/i', $OS)) { $OS = 'Unix'; } elseif (preg_match('/bsd/i', $OS)) { $OS = 'BSD'; } else { $OS = 'Other'; } return $OS; } else { return "获取访客操作系统信息失败!"; } } //获得访客真实ip function getIp() { $ips = array(); $ip = ''; if (!empty($_SERVER["HTTP_CLIENT_IP"])) { $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { //获取代理ip $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); } if ($ip) { $ips = array_unshift($ips, $ip); } $count = count($ips); for ($i = 0; $i < $count; $i++) { if (!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i])) { //排除局域网ip $ip = $ips[$i]; break; } } $tip = empty($_SERVER['REMOTE_ADDR']) ? $ip : $_SERVER['REMOTE_ADDR']; if ($tip == "127.0.0.1") { //获得本地真实IP return $this->get_onlineip(); } else { return $tip; } } //获得本地真实IP 如果有问题http://www.ip138.com/找到iframe更新ipUrl function get_onlineip() { $mip = file_get_contents($this->ipUrl); if ($mip) { preg_match("/\[.*\]/", $mip, $sip); $p = array("/\[/", "/\]/"); return preg_replace($p, "", $sip[0]); } else { return "获取IP地址失败"; } } //根据ip获得访客所在地地名 function getAddress($ip = '') { if (empty($ip)) { $ip = $this->getIp(); } $ipadd = file_get_contents($this->ipApiUrl. $ip); //根据新浪api接口获取 if ($ipadd) { $charset = iconv("gbk", "utf-8", $ipadd); preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $charset, $ipadds); return $ipadds; //返回一个二维数组 } else { return "地址不存在"; } } } ?>
相关推荐
总的来说,这个"3ip类库"为PHP开发者提供了一站式的解决方案,简化了获取客户端信息的过程,使得开发者能更专注于业务逻辑,提高开发效率。正确理解和使用此类库,可以帮助我们更好地服务用户,优化网站体验。
在PHP编程中,获取客户端的信息是一项常见的需求,例如用户的IP地址、地理位置、浏览器信息以及本地真实IP等。这些数据在网站统计、用户行为分析、安全防护等方面都有重要作用。本篇文章将详细讲解如何利用PHP实现这...
移动互联网时代,手机站是必须的,以下是本人整理的php获取手机浏览器的信息函数,希望对您开发手机站有所帮助,此收藏的手机信息函数类有取手机号码,浏览器报头信息,取得手机类型,取得手机IP等功能
Composer是一个自动加载器(autoloader),能够自动加载PHP类库,使得开发者无需手动引入所需的类文件,从而简化了代码管理。在PHP的世界里,很多开源框架和库如Laravel、Symfony等都依赖于Composer来管理其依赖。 ...
这个"php取得用户IP地址类.zip"压缩包包含了一个专门用于获取用户IP地址的PHP类,以及两个附加文件:"php中文网免费下载站.txt"和"php中文网下载站.url",这可能指向了该类的来源或相关资源。 首先,让我们详细了解...
在IT领域,服务器端和客户端程序是构建网络应用的基础组件,它们共同构成了互联网服务的核心架构。这个主题将深入探讨这两个概念以及它们...通过实践和学习,你可以掌握这些基础知识,从而在IT领域中取得更大的成就。
要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER[“HTTP_X_FORWARDED_FOR”] 来读取。 (2) 但只有客户端使用“透明代理”的情况下,$_SERVER[“HTTP_X_FORWARDED_FOR”] 的值才是客户端真正的IP...
PHP中设置和获取头信息是网络编程中常见的需求,尤其在网络请求中,正确的设置HTTP头信息对于服务器和客户端之间的数据传输至关重要。本文将详细介绍如何在PHP中通过curl扩展设置请求头信息以及如何获取响应头信息。...
PHP 中,要取得最近一条查询的信息,应该使用函数 mysql_insert_id(),因此,正确答案是 C。 PHP 中,要查看一个结构类型变量的值,可以使用函数 print_r(),因此,正确答案是 D。 PHP 中,哪个变量数组总是...
取得金钥 您将需要发布和订阅密钥来对您的应用进行身份验证。 从获取密钥。 配置PubNub 将Java SDK集成到您的项目中: 没有作曲家 克隆以下存储库: git clone https://github.com/pubnub/php.git ./pubnub-php ...
#### 一、如何取得来访者的IP地址? 在PHP中,获取客户端IP地址可以通过`$_SERVER`全局数组中的多个元素来实现: 1. **`$_SERVER['REMOTE_ADDR']`**:直接获取客户端IP地址。 2. **`$_SERVER['CLIENT_IP']`**:当...
exit() 和 die() 函数都是用于终止脚本执行的,但 die() 函数可以显示错误信息。 _PHP 日期时间_ 14. 下面程序运行结果?答案:B、得到今天的日期(年-月-日)与下周的日期(年-月-日)。该代码使用 time() 函数取得...
PHP处理多个同名复选框,并在客户端用javascript来判断 把PHP4安装到Win2000的IIS5中 如何实现页面自动跳转 正则表达式使用详解 正则表达式使用详解(二) PHP4.04 PWS在Win98下的安装与配
取得正则表达式的全部匹配.php 取得正则表达式的全部匹配 返回与模式匹配的数组单元.php 返回与模式匹配的数组单元 正则表达式的替换.php 正则表达式的替换 正则表达式的拆分.php 正则表达式的拆分 表单验证....
10. 最近一条查询信息:mysql_insert_id() 函数可以用于取得最近一条查询的信息。 11. 结构类型变量:print_r() 函数可以用于查看结构类型变量的值。 12. 客户端 Cookies 数据:$_COOKIE 是一个超全局变量,总是...
【PHP(CHM)学习指南】 PHP(Hypertext Preprocessor,超文本预处理器)是一种广泛使用的开源脚本语言,尤其适合于Web开发,可以嵌入到HTML中...只要持之以恒,10分钟入门并非不可能,祝你在PHP学习之旅中取得成功!
《PHP开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第I卷,以开发...
// 取得 MySQL 客户端信息 } } /****************************************************************** -- 函数名:query($sql) -- 作 用:数据库执行语句,可执行查询添加修改删除等任何sql语句 -- 参 数:...
《PHP开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第I卷,以开发...