php中怎样实现判断是手机访问还是电脑浏览器访问

用php或者javascript技术如何判断用户是用pc还是手机访问网站呢?并且如果是电脑访问就跳转到www.abc.com。而手机用户就跳转到wap.abc.com。请... 用php或者javascript技术如何判断用户是用pc还是手机访问网站呢?并且如果是电脑访问就跳转到www.abc.com。而手机用户就跳转到wap.abc.com。请给我段代码,最好有注释。谢谢
是判断用户的ip还是其它?
展开
 我来答
dzb3688
推荐于2017-04-20 · TA获得超过663个赞
知道答主
回答量:62
采纳率:94%
帮助的人:26.1万
展开全部

严格的讲 strpos($_SERVER['HTTP_ACCEPT'],'wap')!==false 判断是不够的,网上找了段比较全的测试无误,贴出来mark下:

  /**
     * 判断是手机访问pc访问
     */
    protected function check_wap() {
        if (isset($_SERVER['HTTP_VIA'])) {
            return true;
        }
        if (isset($_SERVER['HTTP_X_NOKIA_CONNECTION_MODE'])) {
            return true;
        }
        if (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID'])) {
            return true;
        }
        if (strpos(strtoupper($_SERVER['HTTP_ACCEPT']), "VND.WAP.WML") > 0) {
            // Check whether the browser/gateway says it accepts WML.  
            $br = "WML";
        } else {
            $browser = isset($_SERVER['HTTP_USER_AGENT']) ? trim($_SERVER['HTTP_USER_AGENT']) : '';
            if (empty($browser)) {
                return true;
            }
            $mobile_os_list = array('Google Wireless Transcoder', 'Windows CE', 'WindowsCE', 'Symbian', 'Android', 'armv6l', 'armv5', 'Mobile', 'CentOS', 'mowser', 'AvantGo', 'Opera Mobi', 'J2ME/MIDP', 'Smartphone', 'Go.Web', 'Palm', 'iPAQ');

            $mobile_token_list = array('Profile/MIDP', 'Configuration/CLDC-', '160×160', '176×220', '240×240', '240×320', '320×240', 'UP.Browser', 'UP.Link', 'SymbianOS', 'PalmOS', 'PocketPC', 'SonyEricsson', 'Nokia', 'BlackBerry', 'Vodafone', 'BenQ', 'Novarra-Vision', 'Iris', 'NetFront', 'HTC_', 'Xda_', 'SAMSUNG-SGH', 'Wapaka', 'DoCoMo', 'iPhone', 'iPod');

            $found_mobile = $this->checkSubstrs($mobile_os_list, $browser) || $this->checkSubstrs($mobile_token_list, $browser);
            if ($found_mobile) {
                $br = "WML";
            } else {
                $br = "WWW";
            }
        }
        if ($br == "WML") {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断手机访问, pc访问
     */
    protected function checkSubstrs($list, $str) {
        $flag = false;
        for ($i = 0; $i < count($list); $i++) {
            if (strpos($str, $list[$i]) > 0) {
                $flag = true;
                break;
            }
        }
        return $flag;
    }
    
    if ($this->check_wap()) {
                   echo 'wap';
        }else{
          echo 'pc';
        }
百度网友155bc4a
2013-09-08 · 超过13用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:43.7万
展开全部
if(strpos($_SERVER['HTTP_ACCEPT'],'wap')){
手机页面
}else{
电脑页面
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Xily9
2013-09-06 · 超过19用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:60.8万
展开全部
<?php
if(strpos($_SERVER['HTTP_ACCEPT'],'wap')!==false)
{//手机
}else{
//电脑
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式