判断PC或mobile设备

js 限制:

 <script type="text/javascript">
 function uaredirect(f){try{if(document.getElementById("bdmark")!=null){return}var b=false;if(arguments[1]){var e=window.location.host;var a=window.location.href;if(isSubdomain(arguments[1],e)==1){f=f+"/#m/"+a;b=true}else{if(isSubdomain(arguments[1],e)==2){f=f+"/#m/"+a;b=true}else{f=a;b=false}}}else{b=true}if(b){var c=window.location.hash;if(!c.match("pc")){if((navigator.userAgent.match(/(iPhoneiPodAndroidios)/i))){location.replace(f)}}}}catch(d){}}function isSubdomain(c,d){this.getdomain=function(f){var e=f.indexOf("://");if(e>0){var h=f.substr(e+3)}else{var h=f}var g=/^www\./;if(g.test(h)){h=h.substr(4)}return h};if(c==d){return 1}else{var c=this.getdomain(c);var b=this.getdomain(d);if(c==b){return 1}else{c=c.replace(".","\\.");var a=new RegExp("\\."+c+"$");if(b.match(a)){return 2}else{return 0}}}};
 uaredirect("http://www.test.com/mobile"); 

 </script>

php限制:

<?php

namespace app\controllers;

use yii\web\Controller;
use Yii;

class CommonController extends Controller
{
    public function init()
    {
        if (!empty($_COOKIE[‘lang‘])) {
            $lang = $_COOKIE[‘lang‘];
        } else {
            $lang = ‘en‘;
        }
        if ($lang == ‘cn‘) {
            Yii::$app->language = ‘cn‘;
        } else {
            Yii::$app->language = ‘en‘;
        }
        $tmp = self::isMobile();
        if ($tmp) {
            return $this->redirect(‘./index.php?r=mobile/home/index‘);
        } else {

        }
    }

    private function isMobile()
    {
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
        if (isset($_SERVER[‘HTTP_X_WAP_PROFILE‘])) {
            return TRUE;
        }
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset($_SERVER[‘HTTP_VIA‘])) {
            return stristr($_SERVER[‘HTTP_VIA‘], "wap") ? TRUE : FALSE;
            // 找不到为flase,否则为TRUE
        }
        // 判断手机发送的客户端标志,兼容性有待提高
        if (isset($_SERVER[‘HTTP_USER_AGENT‘])) {
            $clientkeywords = array(‘mobile‘, ‘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‘);
            // 从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;
    }

}
时间: 2024-10-18 12:19:03

判断PC或mobile设备的相关文章

js判断设备类型是移动设备还是PC设备

时下,许多web网站都有自己的手机建站,当用移动设备浏览网站的时候,我们希望能跳转到手机网址上,下面是一套并不是很完善的代码,高手可继续完善. 代码贴出: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js判断设备类型是移动设备还是PC设备</title> <script type="t

javascript判断设备类型-手机(mobile)、安卓(android)、电脑(pc)、其他(ipad/iPod/Windows)等

使用device.js检测设备并实现不同设备展示不同网页 html代码: <!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <script src="device.js"></script> </head> <body style="margin: auto

判断是否是移动设备登录

/// <summary> /// 判断是否是移动设备登录 /// </summary> /// <returns></returns> public static bool IsMobileDevice() { string[] mobileAgents = { "iphone", "android", "phone", "mobile", "wap", &

各种语言判断是否是手机设备

这个网址是各种语言的判断是否是手机设备 http://detectmobilebrowsers.com/ 举例:C#判断是否是 protected void Page_Load(object sender, EventArgs e) { string[] mobileAgents = { "iphone", "ipad", "midp", "ucweb", "rv:1.2.3.4", "andro

在Windows 2008上安装Windows Mobile设备中心

我在windows2008系统上安装Microsoft Windows Mobile Device Center v6.1时,老是弹出对话框提示缺少一个Windows Mobile设备中心所需要的Windows组件.请帮忙解决这个问题. 因为你的Windows 2008系统没有开启桌面体验功能,所以会发生这个问题.开启桌面体验功能的方法如下:一.单击“开始”菜单→“运行”命令,输入“services.msc”并回车打开“服务”对话框,找到“Themes”服务项,双击打开它,将“启动类型”改为“自

Inconsistant light map between PC and Mobile

Author: http://www.cnblogs.com/open-coder/p/3898159.html The light mapping effects between PC and Mobile become very incosistant just as following: With the same light maps, the left one is the Android Platform, and the right one is the PC Platform.

缺少一个Windows Mobile设备中心所需要的Windows组件 Activesync4.5安装问题

我在windows server 2008系统上安装 ActiveSync win7下载v6.1 中文安装版(64位)时, 会弹出对话框提示缺少一个Windows Mobile设备中心所需要的Windows组件的问题. 因为你的Windows server  2008系统没有开启桌面体验功能,所以会发生这个问题. 开启桌面体验功能的方法如下: 一.单击"开始"菜单→"运行"命令,输入"services.msc"并回车打开"服务"

Fiddler:在PC和移动设备上抓取HTTPS数据包

Fiddler是一个免费的Web调试代理,支持任何浏览器.系统以及平台.这个工具是进行Web和App网络开发的必备工具,戳此处下载. 根据Fiddler官网的描述,具有以下六大特点: Web调试 性能测试 HTTP/HTTPS流量记录 Web会话处理 安全测试 自定义扩展性 本文讨论的主要内容是如何设置Fiddler,使PC和移动设备上可以抓取HTTPS数据包. 首先,在菜单栏选择Tools->FiddlerOptions,切换到Connections选项卡 第二步,勾选允许远程连接,并设置一个

JS判断是否是移动设备进行http链接重定向

1.问题: 用户使用手机移动设备访问127.0.0.1/yemian,自动识别到手机端并且跳转至127.0.0.1/m/yemian 2.小二,上代码: //判断是否是移动设备 var ua = navigator.userAgent; var UA = { Android:function () { //安卓 return ua.match(/Android/i)?true:false; }, BlackBerry:function() { //黑莓 return ua.match(/Blac