PHP判断访客是否手机端访问的方法总结_php技巧_脚本之家

本文由码农网 –
小峰原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!

本文实例总结了PHP判断访客是否手机端访问的方法。分享给大家供大家参考,具体如下:

今天要给大家分享一段PHP代码,该代码的功能是用来判断访客是否移动端浏览器访问,该功能的实现思路是通过HTTP_澳门新葡亰娱乐在线,X_WAP_PROFILE、HTTP_VIA、HTTP_USER_AGENT等信息来判断访客是否通过移动端浏览器访问PHP网站。以下是PHP代码:

在平常工作开发中,我们通常需要开发出PC端和移动端两个不同的系统,从而根据访问端的不同进入到不同的操作界面中。这就需要我们首先要对访问的客户端进行判断是PC端还是移动端。

/**
 * 是否移动端访问访问
 *
 * @return bool
 */
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判断访问端是否是移动端从而确定是移动端访问的4种方法:

代码比较完整,有兴趣的同学可以多做一些测试,有任何bug可以在评论中留言。

1、根据 HTTP_X_WAP_PROFILE是否存在进行判断,存在则是移动端

/*** 是否是移动端访问* @desc 判断是否是移动端进行访问* @方法一:判断是否有HTTP_X_WAP_PROFILE,有则一定是移动设备。* @return bool* $Author: Zhihua_W*/function isMobile1(){ if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } else { return false; }}

2、根据HTTP_VIA信息进行判断,如果VIA信息含有wap则是移动设备

/** * 是否是移动端访问 * @desc 判断是否是移动端进行访问 * @方法二:判断HTTP_VIA信息是否含有wap信息,有则一定是移动设备。 * @return bool * $Author: Zhihua_W */ function isMobile2 () { if (isset ) { return true; } else { return false; } }

3、根据手机发送的客户端标志进行判断,此方法比较笨,并且兼容性有待提高

/*** 是否是移动端访问* @desc 判断是否是移动端进行访问* @方法三:判断是否有HTTP_USER_AGENT信息是否是手机发送的客户端标志,有则一定是移动设备。* @return bool* $Author: Zhihua_W*/function isMobile3 (){ 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 . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))){ return true; } else { return false; } } else { return false; }}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图