陈德本 6 年之前
父节点
当前提交
c437699481
共有 1 个文件被更改,包括 62 次插入16 次删除
  1. 62 16
      functions.php

+ 62 - 16
functions.php

@@ -14,7 +14,7 @@ function shutdownHandler()
         } else {
             $filename = REGISTER_SHUTDOWN_FUNCTION_LOG_FILENAME;
         }
-        if ($error['type']<3){
+        if ($error['type'] < 3) {
             $message = '时间 : ' . date('Y-m-d H:i:s') . PHP_EOL;
             $message .= '文件 : ' . $error['file'] . PHP_EOL;
             $message .= '行数 : ' . $error['line'] . PHP_EOL;
@@ -26,22 +26,68 @@ function shutdownHandler()
     }
 }
 
-/**
- * 获取当前语言环境
- *
- * @return string
- */
-function lang()
+function isMobile()
 {
-    static $global_lang;
-    if ($global_lang !== null) {
-        return $global_lang;
+    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
+    if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
+        return true;
     }
-    $global_lang = !empty($_REQUEST['global_lang']) ? $_REQUEST['global_lang'] : $_COOKIE['global_lang'];
-    if (empty($global_lang) && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
-        $global_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
-        $global_lang = $global_lang == 'zh' ? $global_lang : "en";
-        setcookie("global_lang", $global_lang, time() + 3600 * 24 * 30, '/');
+    // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
+    if (isset ($_SERVER['HTTP_VIA'])) {
+        // 找不到为flase,否则为true
+        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
     }
-    return $global_lang;
+    // 脑残法,判断手机发送的客户端标志,兼容性有待提高
+    if (isset ($_SERVER['HTTP_USER_AGENT'])) {
+        $clientkeywords = array('nokia',
+            'sony',
+            'ericsson',
+            'mot',
+            'samsung',
+            'htc',
+            'sgh',
+            'lg',
+            'sharp',
+            'sie-',
+            'philips',
+            'panasonic',
+            'alcatel',
+            'lenovo',
+            'iphone',
+            'ipod',
+            'blackberry',
+            'meizu',
+            'android',
+            'netfront',
+            'symbian',
+            'ucweb',
+            'windowsce',
+            'palm',
+            'operamini',
+            'operamobi',
+            'openwave',
+            'nexusone',
+            'cldc',
+            'midp',
+            'wap',
+            'mobile'
+        );
+        // 从HTTP_USER_AGENT中查找手机浏览器的关键字
+        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
+            return true;
+        }
+    }
+    // 协议法,因为有可能不准确,放到最后判断
+    if (isset ($_SERVER['HTTP_ACCEPT'])) {
+        // 如果只支持wml并且不支持html那一定是移动设备
+        // 如果支持wml和html但是wml在html之前则是移动设备
+        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
+            return true;
+        }
+    }
+    return false;
+}
+
+if (isMobile()) {
+    header("location: /tao.php");
 }