---- ISAPI DLLS的缺省返回的是一般的HTML代码,它可以人工创建,也可以在DELPHI中的页面处理控件使用。当然了,最大的优点是DELPHI允许它很容易的连接到数据库,它可以查询到插入到HTML代码中的数据。我们的例程确实是这样实现的,它查询一个数据库,创建一个包含信息的WML,并且将查询的结果返回给用户。直接的说,例程使用的是在DELPHI中的DBDEMOS数据库别名。
---- 这个DBDEMOS数据库允许访问一个关于海上冒险的潜水设备转售的虚拟用户和订单数据库。这个例程允许WAP手机用户来浏览一个实时的给出的用户的订单信息。这个例程的名字叫:"海上冒险订单在线查询
系统",或者简称为MAOOQS(关于下载的详细信息,请看本文结尾的详细细节) 。
---- 登录到海上冒险程序
---- 当你想使用MAOOQS的时候,在你的WAP手机上(或者是在WAP的开发工具中)输入http://myserver/login.wml,这时WML浏览器交要的显示一个"Welcome to" 屏幕,然后会出现一个登录屏幕,"Welcome to" 和登录卡的WML源代码如下所示:
< card id="welcome" title="Welcome to" newcontext="true"
ontimer="#login" >
< timer value="30"/ >
< p align="center" >
< big >MA's On-line< /big >< br/ >
< em >Order Query System< /em >
< /p >
< /card >
< card id="login" title="Login" newcontext="true" >
< p >
< em >Enter your ID:< /em >< br/ >
< input name="custid" value="1221" maxlength="4"
format="*N" emptyok="false"/ >
< em >Enter your password:< /em >< br/ >
< input name="password" value="HI" maxlength="10"
format="*M" emptyok="true"/ >
< br/ >
< do type="accept" label="Login" >
< go method="post" href="/scripts/ma_ooqs.dll/login" >
< postfield name="custid" value="$(custid)"/ >
< postfield name="password" value="$(password)"/ >
< /go >
< /do >
< /p >
< /card >
---- 登录屏幕包括两个输入字段,一个是用户的ID ,另外一个是密码。这两个字段是使用WML的< INPUT >标识符来创建的,用户输入的各种各样的名字是由NAME属性定义的。
---- < DO >标识符定义了一个< go >的作用,它指向例程的ISAPI 的DLLS(确省的路径是/scripts/ma_ooqs.dll)。< go >使用标准的http 的post命令来发送用户输入的数据到这个dll中。注意< postfield >标识符自动的指示浏览器通过http协议来翻译用户输入的$(custid)和$(password) 变量。
---- 当用户点击登录命令的时候,这个wap手机连接到这个dll,这样使得这个dll执行如图所示的登录动作。首先,代码从Request.ContentFields 属性中提取出custid 和password字段。当被确认之后,(又专门的数据库来保存这些信息,通过遍历数据库的方法来确认它,这个遍历的函数是IsValidCustID,如下代码说示
function TMAWebModule.IsValidCustID
(CustID, Password: string): Boolean;
begin
DebugMessage('IsValidCustID:'#13'CustID="' + CustID +
#13'Password="' + Password +' "');
Result := False;
with Customer do begin
try

发表评论