Open;
if Locate('custno',CustID,[]) then
if (LowerCase(CustomerState.AsString) =
LowerCase(Password)) then
Result := True;
finally
Close;
end;
end;
end;
procedure TMAWebModule.MAWebModuleLoginAction(
Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
var
CustID, Password : string;
begin
CustID := Request.ContentFields.Values['custid'];
Password := Request.ContentFields.Values['password'];
{ Check validity of custid/password. }
with Response do begin
if IsValidCustID(CustID,Password) then
begin
DebugMessage('CustID/Password is valid.');
MAWebModuleMainMenuAction(Sender, Request,
Response, Handled);
end
else
begin
DebugMessage('Invalid CustID/Password pair.');
ContentType := MIMETypeWML;
Content := InvalidIDPageWML;
end;
end;
Handled := True;
end;
---- 由于DBDEMOS数据库不包含真实的用户ID和相应的密码,例程使用客户表Customer 中的的CustNo字段来做ID,使用State字段来作相应的密码。为测试这个意图,你可以使用如下的ID 和PASSWORD:"1221" and "HI"; "1560" and "FL"; and "1680" and "GA." 返回到浏览器上的WML代码
---- 一般的,WebBroker应用通过对在OnAction事件句柄中的Response对象的控制返回一些简单的HTML代码到浏览器中,。TWebResponse类通过Response 参数的一个Content 属性来表示,它可以接收被这个事件句柄创建的HTML代码。
---- 当用户的浏览器接收数据的时候,它根据它的MIME类型(Multipurpose Internet Mail Extensions)来处理它。TWebResponse 类的MIME类型缺省类型是"text/html",它指定Content 属性的数据类型,确实的是,HTML代码。
---- 但是,WAP应用需要WML(version1.1)的数据的MIME类型"text/vnd.wap.wml." 因此,Response 对象的ContentType属性需要被改变。注意,ContentType 属性可以被改变成任何有效的MIME类型。例如:改变该属性为"image/gif" 就会允许改动作返回一个位图的图像数据(binary.gif)。
---- 当定义好正确的MIME类型后,该动作事件的句柄就会清楚的设置Content 属性可包含有效的WML代码。由于每一个由application产生的WML页都需要一个公共的题头,这个例程定义了一个名字是WMLHeader 的常量来包含这个信息。
---- 存储返回到数据库中的数据当用户成功登录之后,用户重新回到海上探险的主菜单。通过这个菜单,用户可以选择查看客户的信息或者是订单的状态。如果客户选择用户信息的超链接,将执行MAWebModule Web 模块的 CustInfoAction方法的这个定义过的方法。
---- 首先,代码返回到随着post http命令的CustNo参数,当登录的用户的信息在客户表中被查找到以后,代码创建包括三个输入字段的WML代码。最初,三个输入字段包括客户的zip号码,城市,和state,(记着,这个state是口令). 用户可以调整这三个字段,他可以通过选择"Modify Info"命令,用户可以保存新的值返回到数据库。当用户选中这条命令的时候,将执行ModifyCustAction 方法。(见下图)

发表评论