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

编程入门 行业动态 更新时间:2024-10-10 00:26:21

<a href=https://www.elefans.com/category/jswz/34/1768418.html style=如何判断是手机或电脑访问web"/>

如何判断是手机或电脑访问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界面。


更多推荐

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

本文发布于:2024-02-06 03:49:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746186.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何判断   电脑   手机   web

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!