其实源代码相当容易理解,只需首先了解
构成一个WAP架构。
代表一些页面配置。
因为WAP是手机访问的,一屏文字,称为一个卡片,设置的卡片标题。
正文内容
※界面表示超链接。
以下为常用的WML模板代码:
中国被爱可以在线
『中国被爱可以在线』专注于WAP领域(WAP开发、软件、网站、企业行业应用等),欢迎各界人士与我们携手并进,共创WAP
辉煌!
www.bicyle.org
WML架构模板代码(*.wml)
请在此书写正文。
欢迎访问中国被爱可以在线
ASP+WML架构(*.asp)
<%Response.ContentType="text/vnd.wap.wml"%>
欢迎光临
中国被爱可以在线
ASP+XHTML架构(*.asp)
ASPX+WML架构(*.aspx)
<% Page Language="vb" AutoEventWireup="false"%>
<%Response.ContentType="text/vnd.wap.wml"%>
Function Add(Byval a as integer,Byval b as integer) as integer
Return a+b
End Function
中国被爱可以在线专注于WAP领域、WAP软件、网页、企业行业应用等。
中国被爱可以在线
1981+1982=
自动辨别WEB和WAP访客的源码
既然要利用已有的为HTML浏览器编写的代码,就需要了解请求是从HTML浏览器还是从WML浏览器发出的。同样地,如果想将HTML浏览器直接导向相应的HTML文档,WML浏览器导向WML页面,以下PHP代码可以完成这些。
?
// 因为此脚本发送HTTP头部信息,
// 文件开头的第一个字符必须是PHP标签。
// 相对URL到你的HTML文件
$htmlredirect="/html/my_htmlpage.html";
// 绝对URL到你的WML文件
$wmlredirect="";
if(strpos(strtoupper($HTTP_ACCEPT),"VND.WAP.WML") 0)
{// 检查浏览器/网关是否接受WML。
$br="WML";
}
else{
$browser=substr(trim($HTTP_USER_AGENT),0,4);
if($browser=="Noki"||//诺基亚手机和模拟器
$browser=="Eric"||//爱立信WAP手机和模拟器
$browser=="WapI"||//爱立信WapIDE 2.0
$browser=="MC21"||//爱立信MC218
$browser=="AUR"||//爱立信R320
$browser=="R380"||//爱立信R380
$browser=="UP.B"||//UP.Browser
$browser=="WinW"||//WinWAP浏览器
$browser=="UPG1"||//UP.SDK 4.0
$browser=="upsi"||//另一种UP.Browser
$browser=="QWAP"||//未知QWAPPER浏览器
$browser=="Jigs"||//未知JigSaw浏览器
$browser=="Java"||//未知基于Java的浏览器
$browser=="Alca"||//未知Alcatel-BE3浏览器(基于UP?)
$browser=="MITS"||//未知三菱浏览器
$browser=="MOT-"||//未知浏览器(基于UP?)
$browser=="My S"||//未知爱立信开发套件浏览器?
$browser=="WAPJ"||//虚拟WAPJAG www.wapjag.de
$browser=="fetc"||//fetchpage.cgi Perl脚本来自www.wapcab.de
$browser=="ALAV"||//另一种基于UP的未知浏览器?
$browser=="Wapa")//另一种未知浏览器(基于Web的"Wapalyzer"?)
php
if ($browser=="Wapa")// 另一个未知的浏览器(基于Web的"Wapalyzer"?)
{
$br="WML";
}
else
{
$br="HTML";
}
}
if ($br=="WML")
{
// 强制浏览器加载WML文件
header("302 暂时移动");
header("Location:".$wmlredirect);
exit;
}
else
{
// 强制浏览器加载HTML文件
header("302 暂时移动");
header("Location:".$htmlredirect);
exit;
}
?
这个判断是在服务器端执行的,PHP代码首先检查网关是否接收text/vnd.wap.vml MIME类型。如果不是,将检查前面的字符,查看是否为WML浏览器。如果不符合,则假定其为HTML浏览器。如果有新的WML浏览器,那么ID字符串也需要增加。
这段代码基于Robert Whitinger(robertwapsight.com)的代码,采用了Don Amaro(donamaro.concepcionnl.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"
""
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%?