自动识别WEB和WAP手机用户的源代码
自动识别web和wap手机用户的源代码下载既然要利用已经存在的为html浏览器编写的代码,就需要知道请求是从html浏览器还是从wml浏览器过来的。同样地,如果想重新引导的html浏览器直接到相应的html文档上,wml浏览器到wml页面上,以下的php代码就可以做到这些。
既然要利用已经存在的为html浏览器编写的代码,就需要知道请求是从html浏览器还是从wml浏览器过来的。同样地,如果想重新引导的html浏览器直接到相应的html文档上,wml浏览器到wml页面上,以下的php代码就可以做到这些。
0<?
// 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***/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“ ;
39. }
40. else {
41. $$br = “html“ ;
42. }
43. }
44.
45. if ( $$br == “wml“ ) {
46.// force the browser to load the wml file instead
47. header( “302 moved temporarily“ );
48. header( “location: “ . $$wmlredirect );
49. exit ;
50. }
51. else {
52.// force the browser to load the html file instead
53. header( “302 moved temporarily“ );
54. header( “location: “ . $$htmlredirect );
55. exit ;
56. }
57. ?>
这个判断是在服务端完成的, php代码将首先查看网关是否接收text/vnd.wap.vml mime类型。如果不是,将检测前面的字符,查看是否为wml浏览器。如果不符合,那么就假设为html浏览器。如果有新的wml浏览器,那么id字符串也要增加。
这个代码基于robert whitinger(robert@wapsight***)的代码,使用了don amaro(donamaro.concepcion@nl.unisys***)提供的列表。
注意:由于只需要四个字符串就可以辨别,因此例如:“wapide-sdk/2.0;(r320s(arial))“ 可以使用“wapi”来代替是可行的做法,也是足够的。
同样的功能也可以通过asp来解决。先判断请求的是“/index.wml” 或者 “/index.html” 和所需要的mime类型。另外以下的脚本辨别的方式和上面不一样。另外还需要网关告诉服务器它能接收的text/vnd.wap.wml mime类型。该例子如下所示:
01.<%
02.response.buffer = true
03. dim iswap
04. httpaccept = lcase(request.servervariables( “http_accept“ ))
05. if instr(httpaccept, “wap“ ) then
06. iswap=1
07. else response.redirect “/index.html“ : response. flush : response. end
08.end if
09.%>
10.<%response.contenttype = “text/vnd.wap.wml“ %><?xml version= “1.0“ ?>
11.<%response. flush %>
12.<!doctype wml public “-//wapforum//dtd wml 1.1//en“
13.“http://www.wapforum***/dtd/wml_1.1.xml“ >
14. <wml>
15. <card id= “redirect“ >
16. <onevent type= “onenterforward“ >
17. <go href= “/index.wml“ />
18. </onevent>
19. <p>
20. <a href= “/index.wml“ >enter</a>
21. </p>
22. </card>
23. </wml>
24. <%response. flush :response. end %>
发表评论