浏览器如何知道是哪个html,判断URL请求是从WML浏览器来的还是HTML浏览器来的

本文介绍了如何通过PHP和ASP代码在服务器端区分HTML和WML浏览器,并根据用户设备类型进行定向重定向。代码示例详细展示了如何检查HTTP头信息和用户代理字符串,以便正确引导用户到HTML或WML页面。
摘要由CSDN通过智能技术生成

既然要利用已经存在的为HTML浏览器编写的代码,就需要知道请求是从HTML浏览器还是从WML浏览器过来的。同样地,如果想重新引导的HTML浏览器直接到相应的HTML文档上,WML浏览器到WML页面上,下面分别有PHP/ASP代码来实现这些。

// 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

%>

/p>

"http://www.wapforum.org/DTD/wml_1.1.xml">

enter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值