如何判断访问来自pc端还是移动端?

主要是判断来自pc端,因为有些操作是必须在电脑上操作的,
来自移动端的,隐藏部分功能。

阅读 8k
5 个回答

Mobile_Detect是轻量级php库通过User-agent和特定的人Http头部来判断:

function is_mobile() {
    if(empty($_SERVER['HTTP_USER_AGENT']))return false;
    $user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
    $mobile_agents = Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte");
    $is_mobile = false;
    foreach ($mobile_agents as $device) {
        if (stristr($user_agent, $device)) {
            $is_mobile = true;
            break;
        }
    }
    return $is_mobile;
}

贴一下THINKcmf里面的代码

/**
 * 判断是否为手机访问
 * @return  boolean
 */
function sp_is_mobile() {
    static $sp_is_mobile;

    if ( isset($sp_is_mobile) )
        return $sp_is_mobile;

    if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
        $sp_is_mobile = false;
    } elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.)
            || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
            || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
            || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
            || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
            || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false
            || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) {
        $sp_is_mobile = true;
    } else {
        $sp_is_mobile = false;
    }

    return $sp_is_mobile;
}

/**
 * 判断是否为微信访问
 * @return boolean
 */
function sp_is_weixin(){
    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
        return true;
    }
    return false;
}

当然,如果你还需要判断安卓或者ios的话,有一个简单的方法,移动端自定义HTTP_USER_AGENT的值,然后从服务端获取$_SERVER['HTTP_USER_AGENT'],例如,增加一个my_webapp,判断这个字符是否存在

$user_agent = $_SERVER['HTTP_USER_AGENT'];
            if (stripos($user_agent, 'my_webapp') !== false) {
                $this->assign("is_webapp", true);
        }

if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {

alert("iPhone"); //iPhone端

} else if (/(Android)/i.test(navigator.userAgent)) {

alert("Android");//Android端

} else {

alert("PC");//PC端

};

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题