/**
* 获取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;
}

最新文章

  1. 异常处理汇总 ~ 修正果带着你的Net飞奔吧!
  2. codevs 1228 苹果树 树链剖分讲解
  3. sql事务(Transaction)用法介绍及回滚实例
  4. javaweb框架构想-自己的对象存储池-遁地龙卷风
  5. 文件代码对比软件 Beyond Compare
  6. shell 循环
  7. scala高级内容(二) - Implicit
  8. 【BZOJ】【3757】苹果树
  9. 在iOS应用程序中打开设备设置界面及其中某指定的选项界面
  10. Java-WebSocket
  11. fmt命令
  12. (转)DevExpress GridView属性设置
  13. C "right-left" 从左到右
  14. java.util.Date 与 java.sql.Date 之间的转换
  15. mybatis的时间比较 xml 及不解析<=的写法
  16. JVM,Tomcat与OSGi类加载机制比较
  17. DomeOS部署
  18. Nginx Epoll事件模型优劣
  19. IntelliJ IDEA(九) :插件(转)
  20. java.——最大子序列和(前提是:全部都是非负数)

热门文章

  1. js 对象的_proto_属性 和函数的prototype属性分析
  2. golang配置
  3. js简易计算器底层运算逻辑(带撤销功能)
  4. vmware 12
  5. IntelliJ Idea Java 使用
  6. Kotlin Linux下的环境搭建
  7. vue路由(一个包含重定向、嵌套路由、懒加载的main.js如下)and 路由跳转传参的query和params的异同
  8. (转)Xcode导航快捷键(大全)
  9. HttpContext.Current.Items的用途
  10. python文件基础IO,OS