如何判断是手机或电脑访问web

移动设备越来越主流,有很多网站对手机访问并不是特别的友好。所以我们要另外的给手机客户分配针对手机web访问的界面。如何判断是手机还是电脑在访问呢?

首先手机访问时,会附带发送user-agent信息,这个信息里面会有手机号码信息。我们如果可以获取。。。算了,用脚趾头也会想到,这是属于用户个人隐私信息的,移动和联通公司肯定给屏蔽或加密了。除非你服务器IP是在他们的白名单上。

那么我们换其他方式,当手机通过代理服务器访问的时候,http头信息会毫无疑问的包含一个信息:via。这个信息提供了有价值的判断信息。

比如:

河南移动取得的via信息是:

http/1.1 hazz-b-gw001-wap(infox-wisg, huawei technologies)

河南联通的via信息是:

zxwap gateway,zte technologies

这样我们获取http的via信息字符串看是否包含wap字符,如果有则是通过手机访问。这样就十分准确了,但是也会屏蔽掉那些用手机模拟器的用户,(就是用支持wap的浏览器)。。。

先看代码《=====

check_wap() {
    return stristr($_SERVER[‘HTTP_VIA‘],"wap") ? true : false;
}  

当然上面那个方法太精准了,我们也想让那些用手机模拟器的客户也可以访问的话,就要再想个办法了。

下面是我网上查的一个办法,通过判断浏览器代理标识符,判断是否是支持WAP的浏览器来决定访问页面。这有一个缺点就是不可能全部的列出所有手机的浏览器标识符与所支持的浏览器标识符。额好吧。。。

先看下代码《====

<?php
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";  
    //上面返回true 都是wap 访问
    } else {
        $browser = isset($_SERVER[‘HTTP_USER_AGENT‘]) ? trim($_SERVER[‘HTTP_USER_AGENT‘]) : ‘‘;
        if(empty($browser)) return true;
        $browser=substr($browser,0,4);
        if ($browser=="Noki" || // Nokia phones and emulators
            $browser=="Eric" || // Ericsson WAP phones and emulators
            $browser=="WapI" || // Ericsson WapIDE 2.0
            $browser=="MC21" || // Ericsson MC218
            $browser=="AUR" || // Ericsson R320
            $browser=="R380" || // Ericsson R380
            $browser=="UP.B" || // UP.Browser
            $browser=="WinW" || // WinWAP browser
            $browser=="UPG1" || // UP.SDK 4.0
            $browser=="upsi" || // another kind of UP.Browser ??
            $browser=="QWAP" || // unknown QWAPPER browser
            $browser=="Jigs" || // unknown JigSaw browser
            $browser=="Java" || // unknown Java based browser
            $browser=="Alca" || // unknown Alcatel-BE3 browser (UP based?)
            $browser=="MITS" || // unknown Mitsubishi browser
            $browser=="MOT-" || // unknown browser (UP based?)
            $browser=="My S" ||// unknown Ericsson devkit browser ?
            $browser=="WAPJ" || // Virtual WAPJAG www.wapjag.de
            $browser=="fetc" || // fetchpage.cgi Perl script from www.wapcab.de
            $browser=="ALAV" || // yet another unknown UP based browser ?
            $browser=="Wapa" || // another unknown browser (Web based "Wapalyzer"?)
            $browser=="Oper") // Opera
        {
            $br = "WML";
        } else {
            $br = "HTML";
        }
    }
    if($br == "WML") {
        return TRUE;
    } else {
        return FALSE;
    }
}
if(!check_wap()) {
    Header("Location: http://youUrl");
    exit();
}  

当然我们的目的是给那些用非电脑访问的客户返回那些适合他们的 十分友好的界面。

那么我认为一个好的办法就是用PHP去判断访问web 的浏览器的详细信息,浏览器尺寸大小,版本、内核、等等,来因材施教的返回web界面。

时间: 2024-10-15 00:57:29

如何判断是手机或电脑访问web的相关文章

javascript如何判断是手机还是电脑访问本网页

1 var system ={}; 2 var p = navigator.platform; 3 system.win = p.indexOf("Win") == 0; 4 system.mac = p.indexOf("Mac") == 0; 5 system.x11 = (p == "X11") || (p.indexOf("Linux") == 0); 6 if(system.win||system.mac||syst

判断是手机还是电脑访问的代码 &nbsp;

判断是手机还是电脑访问的函数代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public function whichpad() {     //检测访问的系统及版本.浏览器版本等信息     $agent = strtolower($_SERVER['HTTP_USER_AGENT']);     $is_iphone = (strpos($agent, 'iphone')) ? true : false;     $is_android = (strpo

如何判断是手机还是电脑访问网站:

现在由于手机功能的强大,使用手机上网的用户越来越多,那么就需要判断用户是用何种客户端登陆的网站,如果使用的是电脑则使用电脑版本的网页,如果使用的手机则使用手机版本的网页,下面是一段能够判断是手机还是电脑的代码: function check()  {    var userAgentInfo=navigator.userAgent;    var Agents =new Array("Android","iPhone","SymbianOS",&

根据浏览器头判断是手机还是电脑访问

当一个域名对应一个PC端和mobile端的网站时,我们需要根据浏览器的header头做跳转判断,最简单的就是通过js来实现: <script type="text/javascript">     var isOnPc=!(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent));     if(isOnPc){         self.location="/pc/index.

传入http请求的UserAgent 根据它判断是手机还是电脑发送过来的请求

/** * 传入http请求的UserAgent * 根据它判断是手机还是电脑发送过来的请求 * @param userAgent * @return */ public static boolean choose(String userAgent) { if (userAgent.indexOf("Noki") > -1 || // Nokia phones and emulators userAgent.indexOf("Eric") > -1 ||

PHP和JS判断手机还是电脑访问

当用户使用手机等移动终端访问网站时,我们可以通过程序检测用户终端类型,如果是手机用户,则引导用户访问适配手机屏幕的移动站点.本文将介绍分别使用PHP和JAVASCRIPT代码判断用户终端类型. PHP版 我们使用PHP的$_SERVER['HTTP_USER_AGENT']来获取手机用户浏览器的用户代理,然后匹配已有的各种手机浏览器代理库,如果含有匹配的关键字,则判断为手机(移动终端)用户. function is_mobile() { $user_agent = $_SERVER['HTTP_

PHP 判断终端是手机还是电脑访问网站代码

用thinkphp做底层框架,判断客户是用pc访问还是手机访问的. <?php $platform = platform();//检测访问平台 //print_r($_SERVER);DIE; define('FILE_ROOT' , dirname(__FILE__)); define('APP_DEBUG' , true); define('__BUICK__' , true);// define('APP_PUBLIC_PATH' , '../Public'); define('THINK

php判断是手机还是pc访问从而走不同url

<?php header("Content-type:text/html;charset=utf-8"); function is_mobile(){ $user_agent = $_SERVER['HTTP_USER_AGENT']; $mobile_agents = Array("240x320","acer","acoon","acs-","abacho","aho

php判断是手机还是pc访问

$is_mobile = false; $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');