PHPIN.NET

 找回密码
 立即注册
查看: 4387|回复: 0

[PHP类\函数] 判断是移动设备自动跳转到对应的移动(手机版)页面

[复制链接]

469

主题

31

回帖

5507

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5507
发表于 2018-5-9 07:13:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
判断是移动设备自动跳转到对应的移动(手机版)页面

支持HTTP/HTTPS,支持带WWW和不带WWW(其他二级域名下暂时不支持)

默认跳转到移动版二级域名为://m对应的页面,可自行修改。

(移动版和PCURL格式不对应的请勿使用。)


代码:(加入到页面逻辑之前,或者存为文件引入都可以。)
  1. <?php
  2. function CurPageURL() {
  3.     $pageURL = 'http';
  4.     if ($_SERVER["HTTPS"] == "on") {
  5.         $pageURL.= "s";
  6.     }
  7.     $pageURL.= "://";
  8.     if ($_SERVER["SERVER_PORT"] != "80") {
  9.         $pageURL.= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
  10.     } else {
  11.         $pageURL.= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
  12.     }
  13.     return $pageURL;
  14. }
  15. function IsMobileRequest() {
  16.     $_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : '';
  17.     $mobile_browser = '0';
  18.     if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
  19.         $mobile_browser++;
  20.     }
  21.     if ((isset($_SERVER['HTTP_ACCEPT'])) and (strpos(strtolower($_SERVER['HTTP_ACCEPT']), 'application/vnd.wap.xhtml+xml') !== false)) {
  22.         $mobile_browser++;
  23.     }
  24.     if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
  25.         $mobile_browser++;
  26.     }
  27.     if (isset($_SERVER['HTTP_PROFILE'])) {
  28.         $mobile_browser++;
  29.     }
  30.     $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));
  31.     $mobile_agents = array('w3c ', 'acs-', 'alav', 'alca', 'amoi', 'audi', 'avan', 'benq', 'bird', 'blac', 'blaz', 'brew', 'cell', 'cldc', 'cmd-', 'dang', 'doco', 'eric', 'hipt', 'inno', 'ipaq', 'java', 'jigs', 'kddi', 'keji', 'leno', 'lg-c', 'lg-d', 'lg-g', 'lge-', 'maui', 'maxo', 'midp', 'mits', 'mmef', 'mobi', 'mot-', 'moto', 'mwbp', 'nec-', 'newt', 'noki', 'oper', 'palm', 'pana', 'pant', 'phil', 'play', 'port', 'prox', 'qwap', 'sage', 'sams', 'sany', 'sch-', 'sec-', 'send', 'seri', 'sgh-', 'shar', 'sie-', 'siem', 'smal', 'smar', 'sony', 'sph-', 'symb', 't-mo', 'teli', 'tim-', 'tosh', 'tsm-', 'upg1', 'upsi', 'vk-v', 'voda', 'wap-', 'wapa', 'wapi', 'wapp', 'wapr', 'webc', 'winw', 'winw', 'xda', 'xda-');
  32.     if (in_array($mobile_ua, $mobile_agents)) {
  33.         $mobile_browser++;
  34.     }
  35.     if (strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false) {
  36.         $mobile_browser++; // Pre-final check to reset everything if the user is on Windows
  37.         
  38.     }
  39.     if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false) {
  40.         $mobile_browser = 0; // But WP7 is also Windows, with a slightly different characteristic
  41.     }
  42.     if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false) {
  43.         $mobile_browser++;
  44.     }
  45.     if ($mobile_browser > 0) {
  46.         return true;
  47.     } else {
  48.         return false;
  49.     }
  50. }
  51. $dqurl = CurPageURL();
  52. if (IsMobileRequest()) {
  53.     if (strstr($dqurl, "//www")) {
  54.         $dqurl = str_replace('://www', '://m', $dqurl);
  55.         header('Location:' . $dqurl);
  56.         exit;
  57.     }else{
  58.         $dqurl = str_replace('://', '://m.', $dqurl);
  59.         header('Location:' . $dqurl);
  60.         exit;
  61.     }
  62. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|PHPIN.NET ( 冀ICP备12000898号-14 )|网站地图

GMT+8, 2024-4-19 16:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表