自动识别WEB和WAP访客的源码

既然要利用已经存在的为HTML浏览器编写的代码,就需要知道请求是从HTML浏览器还是从WML浏览器过来的。同样地,如果想重新引导的HTML浏览器直接到相应的HTML文档上,WML浏览器到WML页面上,以下的PHP代码就可以做到这些。
<?
// Because this script sends out HTTP header information,
// the first characters in the file must be the <? PHP tag.
// relative URL to your HTML file
$htmlredirect = "/html/my_htmlpage.html";
// ABSOLUTE URL to your WML file
$wmlredirect = "http://wap.mysite.com/wml/my_wmldeck.wml";
if(strpos(strtoupper($HTTP_ACCEPT),"VND.WAP.WML") > 0)
{// Check whether the browser/gateway says it accepts WML.
$br = "WML";
}
else {
$browser=substr(trim($HTTP_USER_AGENT),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"?)
{
$br = "WML";
}
else {
$br = "HTML";
}
}
if($br == "WML") {
// Force the browser to load the WML file instead
header("302 Moved Temporarily");
header("Location: ".$wmlredirect);
exit;
}
else {
// Force the browser to load the HTML file instead
header("302 Moved Temporarily");
header("Location: ".$htmlredirect);
exit;
}
?>
这个判断是在服务端完成的, PHP代码将首先查看网关是否接收text/vnd.wap.vml MIME类型。如果不是,将检测前面的字符,查看是否为WML浏览器。如果不符合,那么就假设为HTML浏览器。如果有新的WML浏览器,那么ID字符串也要增加。
这个代码基于Robert Whitinger(robert@wapsight.com)的代码,使用了Don Amaro(donamaro.concepcion@nl.unisys.com)提供的列表。
注意:由于只需要四个字符串就可以辨别,因此例如:"WapIDE-SDK/2.0;(R320s(Arial))" 可以使用“WapI”来代替是可行的做法,也是足够的。
同样的功能也可以通过ASP来解决。先判断请求的是“/index.wml” 或者 “/index.html” 和所需要的MIME类型。另外以下的脚本辨别的方式和上面不一样。另外还需要网关告诉服务器它能接收的text/vnd.wap.wml MIME类型。该例子如下所示:
<%
Response.Buffer = TRUE
Dim IsWap
httpAccept = LCase(Request.ServerVariables("HTTP_ACCEPT"))
if Instr(httpAccept,"wap") then
IsWap=1
Else Response.Redirect "/index.html" : Response.Flush : Response.End
End if
%>
<%Response.ContentType = "text/vnd.wap.wml"%><?xml version="1.0"?>
<%Response.Flush%>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="redirect">
<onevent type="onenterforward">
<go href="/index.wml"/>
</onevent>
<p>
<a href="/index.wml">enter</a>
</p>
</card>
</wml>
<%Response.Flush:Response.End%>

(0)

相关推荐

  • 新浪微博怎么查询访客 微博如何查询访客

    微博是一个由新浪网推出,提供微型博客服务类的社交网站.用户可以通过网页.WAP页面.手机客户端.手机短信.彩信发布消息或上传图片.新浪可以把微博理解为微型博客或者一句话博客.用户可以将看到的.听到的. ...

  • QQ空间最近访客记录删除方法

    如果你觉得QQ空间最近访客记录太多想删除怎么弄?今天小编就为大家介绍一下两者删除访客记录方法: 方法一:从"访客"中进行删除 第一步:登录您的QQ空间,在导航栏上点击“更多”; 第二步:进入"访客"后 ...

  • QQ空间最近访客记录如何删除?

    目前有两种方法可以删除QQ空间最近访客记录,现详细为您介绍: 方法一:从导航栏中“好友”进入最近访客中删除记录; 第一步:登录您的QQ空间,在导航栏上点击“好友”; 第二步:进入最近访客后,点击删除, ...

  • 怎样QQ空间最近访客记录

    如果你觉得QQ空间最近访客记录太多想删除怎么弄?今天小编就为大家介绍一下两者删除访客记录方法: 方法一:从"访客"中进行删除 第一步:登录您的QQ空间,在导航栏上点击“更多”; 第二步:进入"访客"后 ...

  • 腾讯微博怎么看最近访客

    腾讯微博怎么看最近访客?哈哈,别以为腾讯微博是不能看访客所以到处浏览哦,其实是可以查最近访客的,相信有很多筒子没有发现这个功能吧,想看看哪些人偷偷访问你的微博么?赶紧来学学怎么查看吧! 1.首先登录q ...

  • 新浪微博如何查看个人主页访客次数

    新版微博可查看我的微博人气 新浪微博进行小范围改版,升级个人主页,增加我的微博人气,可查看访客次数,访客性别等。 进入微博主页可看到,在个人主页的最底端,有“我的微博人气”统计表,可统计微博转发评论次 ...

  • 如何删除QQ空间日志最近访客?

    第一步:登录您QQ空间日志,打开单篇日志,在日志本文最近访客处,将鼠标移动到访客头像下方,会显示“删除记录”; 第二步:“删除记录后”,点击确认即可。

  • QQ空间的本相册最近访客功能设置

    一、QQ空间“本相册最近访客”功能: 1、本相册最近访客中会展示出最近24位访客的信息; 2、访客只要进入QQ空间某个相册里,将会被记录到该相册的“本相册最近访客”中; 3、本相册最近访客的记录,只有 ...

  • QQ空间如何删除自己的访客记录?

    QQ空间如何删除自己的访客记录?