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

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;
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。