ASP开发WAP简易邮件系统实例
标记 描述
A 任何符号或者大写字母(不包括数字)
a 任何符号或者小写字母(不包括数字)
N 任何数字(不包括符号或者字母)
X 任何符号、数字或者大写字母(不可改变为小写字母)
x 任何符号、数字或者小写字母(不可改变为大写字母)
M 任何符号、数字或者大写字母(可改变为小写字母)或者多个字符,默认为首字大写
m 任何符号、数字或者小写字母(可改变为大写字母)或者多个字符,默认为首字小写
*maxlength属性:指定了用户可输入的最大字符长度,最大限制为256个字符。
*emptyok属性:表示用户可否不填输入框,默认为false,即要填。
*size属性:输入框显示长度,目前未被支持。
*tabindex属性:类似于在HTML表单中按TAB键后,焦点落在哪个选项上,该值决定了这个选择顺序,数字大的排在后面。目前未被支持。
示例:
〈input type="text" title="用户名" name="user" maxlength="50"/〉
2、do元素
Do是WML语言中最有有价值的元素之一,它给用户提供一种在当前Card上进行"动作"的通用方法。
属性列表:
*type属性:告诉浏览器动作的意图。
WML总共声明了9个类型的动作,最常用的动作类型是"accept"和"option"。
1、accept,接受、确认
2、prev,返回上一个历史堆栈中的URL
3、help,请求帮助
4、reset,清除或者重置状态
5、options,根据当前页面的功能设置选项。
6、delete,删除选择条目
7、unknow,相当于空白字串
8、vnd.*。vnd.*及其它不同大小写组合[Vv][Nn][Dd].*。这种类型定义的都是vnd.cotype,用于激活供应商或用户浏览器自定义的某个特定功能,其中co为公司(company)名的缩写。
9、X-*与X-*。扩展类型,目前WML中还没有使用。
*label属性:设置按钮标题,显示在浏览器定义好的屏幕位置,不同浏览器地显示位置不同。如果不设置标题,按钮会按照浏览器的缺省格式显示,不同浏览器的缺省格式不同。
* name属性:按钮名称,可以用Card级的动作覆盖template上的同名动作,重新赋予那些动作新的任务。
*optional属性:来定义一个按钮是否显示,设置为True时会被浏览器忽略
示例:
〈do type="accept" label="发送" optional="false"〉
{Content}
〈/do〉
3、go元素
用来指示浏览器显示指定的URL,包括DECK的第一个CARD或者指定的CARD。语法如下:
〈go href="url" sendreferer="false|true" method="get|post" accept-charset="charset"〉
〈postfield name="name" value="value"/〉
〈setvar name="name" value="value"/〉
〈/go〉
其中href属性为必选,其他为可选。
*sendreferer属性:是否传递当前页的URL,默认值为false。
*method属性:和HTML中的表单FORM的method属性一样,指定表单是以get的方式还是post的方式递交,默认的值为get,但如果未指定method但〈go〉〈/go〉间存在〈postfield〉,手机自动以post方式传递。
*accept-charset 属性:可覆盖在HTTP头里指定的字符集,可以写多个字符集,如accept-charset="UTF-8,US-ASCII, ISO-8859-1"。
〈postfield name="name" value="value"/〉可以看作是HTML表单FORM中的〈INPUT TYPE="HIDDEN" NAME="变量名" value="值"〉,通过它可以向指定的URL传递以“变量名/值”形式的数据。name和value属性都是必选的。注意只有这里的变量是用来递交给CGI程序的。
除了〈postfield〉,还可以在〈go〉和〈/go〉间加入一句或者多句〈setvar name="name" value="value"/〉,该语句的意思是,当触发某一事件时,给变量赋值。
示例:
〈go href="main.asp" method="post" accept-charset="utf-8"〉
〈postfield name="user" value="$(user)"/〉
〈postfield name="pwd" value="$(pwd)"/〉〈/go〉
〈/do〉
邮件登陆界面源码: Index.asp
〈% @LANGUAGE="VBscript" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card title="邮箱登陆"〉
〈p align="center"〉
Welcome To Sohu-WAP-Mail〈/p〉
〈p〉
用户名:
〈input type="text" title="用户名" name="user" maxlength="30"/〉
〈br/〉密 码:
〈input type="password" title="密码" name="pwd" maxlength="30"/〉〈br/〉
〈do type="accept" label="发送" optional="false"〉
〈go href="main.asp" method="post" accept-charset="utf-8"〉
〈postfield name="user" value="$(user)"/〉
〈postfield name="pwd" value="$(pwd)"/〉〈/go〉
〈/do〉
〈/p〉
〈/card〉
〈/wml〉
2) 邮件主页面
邮件主页面主要功能为验证登陆页面传过来的用户名与密码是否正确,如果正确则显示相关的邮件操作链接(如图四),反之则提示密码错误要求重新输入(如图三)。由于某些移动设备不支持跳转,程序尽量避免使用跳转语句。

图三 (登陆失败) 图四(登陆成功)
邮件主页面源代码: main.asp
〈% @LANGUAGE="VBscript" CODEPAGE="65001" %〉
〈%Response.ContentType = "text/vnd.wap.wml; charset=UTF-8"%〉
〈?xml version="1.0" encoding="utf-8"?〉
〈!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"〉
〈wml〉
〈card id="main" title="Sohu-PALM-MAIL平台"〉
〈p〉
〈%
on error resume next
user=request("user")
pwd=request("pwd")
Set pop3 = Server.CreateObject( "JMail.POP3" )
pop3.connect user,pwd,"http://pop3.sohu.com"
pop3.Disconnect
if err.number〈〉0 then
response.write("登陆错误,请检查用户名密码是否正确!〈br/〉")
response.write("〈a href='index.asp'〉重新登陆〈/a〉〈/p〉〈/card〉〈/wml〉")
response.End()
end if
response.write("欢迎你"&user&"@sohu.com〈br/〉")
%〉
〈a href="email_title.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉收件箱〈/a〉〈br/〉
〈a href="send.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉发件箱〈/a〉〈br/〉
〈a href="index.asp"〉重新登陆〈/a〉〈br/〉
〈/p〉
〈/card〉
〈/wml〉
注:
〈a href="email_title.asp?user=〈%=user%〉&pwd=〈%=pwd%〉"〉收件箱〈/a〉
由于某些移动设备并不支持session,为了更好的应用,故采用url参数传递,遗憾的是这样做安全性不高,为了提高安全性,建议对参数进行明文加密后再进行传递,在接收页面在做相对应的解密处理,当然如果你有什么更好的办法,还请发邮件指出,谢谢。

