码迷,mamicode.com
首页 > 移动开发 > 详细

PHP和JS判断访问客户端的是PC还是移动设备

时间:2014-09-20 14:02:17      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:android   cWeb   style   blog   http   color   io   os   java   

js判断

<script type="text/javascript">
    function browserRedirect() {
	var sUserAgent = navigator.userAgent.toLowerCase();
	var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
	var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
	var bIsMidp = sUserAgent.match(/midp/i) == "midp";
	var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
	var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
	var bIsAndroid = sUserAgent.match(/android/i) == "android";
	var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
	var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";

	if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
	    window.location.href = ‘http://url/mobile.html‘;
	} else {
	    window.location = ‘http://url/pc.html‘;
	}

    }

    browserRedirect();
</script>

 (上面js判断方法,个人测试了下,在windows phone8 上会判断为pc)

 

php判断

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

 

PHP和JS判断访问客户端的是PC还是移动设备

标签:android   cWeb   style   blog   http   color   io   os   java   

原文地址:http://www.cnblogs.com/hereim/p/3983016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!