ME文件类型。
<% Response.ContentType=”text/vnd.wap.wml;charset=UTF-8″ %>
声名WML的头文件信息,这个是规定,规定了WAP的版本和采用的标准,如果不明白就这么写就行了,不变的,但是必须要加上。 其中encoding也是指定编码。
<?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”>
接下来就是页面的显示代码了
<card id=”add” title=”经典WAP留言本”>
<p>
昵称:<br/>
<input name=”Name” emptyok=”false” size=”10″ maxlength=”10″/><br/>
标题:<br/>
<input name=”Title” emptyok=”false” maxlength=”40″/><br/>
内容:<br/>
<input name=”Content” format=”false” maxlength=”150″/><br/>
</p>
</card>
简单介绍一下:wml类似html标签,card代表一个卡片,这里简单理解为一个页面就行了,注意:所有的显示的内容都要放在<p> </p>标签里面,一定要注意这点,要不然就会出错。
<meta http-equiv=”Cache-Control” content=”max-age=0″/>
<meta http-equiv=”Cache-Control” content=”no-cache”/>
在meta中指定不缓存页面。
<input name=”Title” emptyok=”false” maxlength=”40″/><br/>
emptyok不允许为空,maxlength允许输入的文字最大长度。
WML 的表单提交有点不同,<postfile name=”title” value=”($title:n)” />是把input表单的值附给title变量,name=”title” 是变量名, value=”($title:n)”是变量,即input中输入的信息,content也是一样。
注:这里($title:n)是WML变量的写法,以$符号开头,类似PHP的变量声名,WML中表单提交有:n,:e,:u,和空,四种状态,其中:n是强制不进行URL转义;:e是转义;:u是反转义;如果为空,在有的手机上默认是不转义,有的是转义, 规范不统一,安全期间,如果不转义,还是写上:n为好。
WAP的变量提交也分两种情况,GET和POST,使用GET方法,对中文的支持并不是很好,所以有使用到表单提交的地方,都改为POST方式提交,代码格式为:
<anchor>POST方式提交
<go href=”save.asp” method=”post”>
<postfield name=”Name” value=”$(Name:n)” />
<postfield name=”Title” value=”$(Title:n)” />
<postfield name=”Content” value=”$(Content:n)” />
<postfield name=”Method” value=”POST” />
</go>
</anchor>
当然对于英文和数字,简单的,使用GET方式提交会比较方便一些,代码格式为:
<a href=”save.asp?Name=$(Name:n)&Title=$(Title:n)&Content=$(Content:n)&Method=GET”>GET方式提交</a>
注:连接不同变量字符的&符号要写为&
发表留言页面add.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>
<head>
<meta http-equiv=”Cache-Control” content=”max-age=0″/>
<meta http-equiv=”Cache-Control” content=”no-cache”/>
</head>
<card id=”add” title=”经典WAP留言本”>
<p>
昵称:<br/>
<input name=”Name” emptyok=”false” size=”10″ maxlength=”10″/><br/>
标题:<br/>
<input name=”Title” emptyok=”false” maxlength=”40″/><br/>
内容:<br/>
<input name=”Content” format=”false” maxlength=”150″/><br/>
<br/><anchor>POST方式提交
<go href=”save.asp” method=”post”>
<postfield name=”Name” value=”$(Name:n)” />
<postfield name=”Title” value=”$(Title:n)” />
<postfield name=”Content” value=”$(Content:n)” />
<postfield name=”Method” value=”POST” />
</go>
</anchor>
<br/><a href=”save.asp?Name=$(Name:n)&Title=$(Title:n)&Content=$(Content:n)&Method=GET”>GET方式提交</a><br/><br/>
<a href=”index.asp”>返回留言列表</a>
</p>
<p>
有任何疑问,请访问:http://www.des igner5.net或<br/>
蓝色理想论坛WAP版:http://www.blueidea.com/bbs<br/>
广告:蓝色理想WAP网站改版了,使用手机访问<a href=”http://wap.blueidea.com”>http://wap.blueidea.com</a><br/>
如果您参考了此程序,有WAP站点,请做上http://wap.blueidea.com的链接。
</p>
<do type=”prev” label=”返回”><prev/></do>
</card>
</wml>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
接下来是保存数据。
保存页面save.asp,代码如下:
<%@LANGUAGE=”VBSCRIPT” CODEPAGE=”65001″%>
<!–#include file=”conn.asp”–>
<%
Function inWML(str)
‘ 把字符串存入数据库,单引号过滤,’==Chr(39)
sTemp = Replace(str, Chr(39), “‘”) ‘单引号过滤
inWML = sTemp
End Function
IF Request(“Method”)<>”” Then
Name=inWML(Trim(Request(“Name”)))
Title=inWML(Trim(Request(“Title”)))
Content=inWML(Trim(Request(“Content”)))
Method=Request(“Method”)
Sql = “INSERT INTO guestbook(Name, Title, Content, Method) values(‘”&Name&”‘, ‘”&Title&”‘, ‘”&Content&”‘, ‘”&Method&”‘)”
Conn.Execute Sql
End IF
Response.Redirect (“index.asp”)
%>
[Ctrl+A 全部选择 提示:你可先修改部分 代码,再按运行]
最后是显示把留言的内容显示出来。
显示数据的时候需要注意字符的替换,因为有些字符是不能直接显示的,需要转换为Ascii码,在WML里面“$”符号是表示变量,如果要显示“$”,需要写为“$$”,例:“一共有$$315元RMB”,显示为“一共有$315元RMB”。
必须要替换的字符,已经写为函数,方便大家使用。
Function outHTM(str)
‘ 把字符串进行HTM解码,输出字符串
Dim sTemp
sTemp = str
outHTM = “”
If IsNull(sTemp) Then
Exit Function
End If
sTemp = Replace(sTemp, “‘”, “‘”) ‘还原单引号
sTemp = Replace(sTemp, “&”, “&”)
sTemp = Replace(sTemp, “<“, “<;;”)
sTemp = Replace(sTemp, “>”, “>”)
sTemp = Replace(sTemp, “$”, “$$”)
sTemp = Replace(sTemp, “ ”, ” “)
sTemp = Replace(sTemp, Chr(10), “<br/>”)
outHTM = sTemp
End Function
显示留言的页面index.asp,代码如下:
<%@LANGUAGE=”VBSCRIPT” CODEPAGE=”65001″%>
<!–#include file=”conn.asp”–>
<%
Function outHTM(str)
‘ 把字符串进行HTM解码,输出字符串
Dim sTemp
sTemp = str
outHTM = “”
If IsNull(sTemp) Then
Exit Function
End If
sTemp = Replace(sTemp, “‘”, “‘”) ‘还原单引号
sTemp = Replace(sTemp, “&”, “&”)
sTemp = Repla ce(sTemp, “<“, “<;;”)
sTemp = Replace(sTemp, “>”, “>”)
sTemp = Replace(sTemp, “$”, “$$”)
sTemp = Replace(sTemp, “ ”, ” “)
sTemp = Replace(sTemp, Chr(10), “<br/>”)
outHTM = sTemp End Function
Sql = “SELECT * FROM guestbook ORDER BY ID DESC ”
Set Rs = Server.CreateObject(“Adodb.Recordset”)
Rs.Open Sql,conn,1,3
page = Request.QueryString(“Page”)
Rs.PageSize = 6 ‘一页6条记录
IF Not IsEmpty(Page) Then
IF Not IsNumeric(Page) Then ‘判断Page是否为数字
Page=1
Else
Page=Cint(Page) ‘转换成短整形Integer
End IF
IF Page > Rs.PageCount Then
Rs.AbsolutePage = Rs.PageCount ‘设置当前显示页等于最后一页
ElseIF Page <= 0 Then
Rs.AbsolutePage = 1 ‘设置当前页等于第一页
Else
Rs.AbsolutePage = Page ‘如果大于零,显示当前页等于接收的页数
End IF
Else
Rs.AbsolutePage = 1
End IF
Page = Rs.AbsolutePage
%>
<% 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>
<head>
<meta http-equiv=”Cache-Control” content=”max-age=0″/>
<meta http-equiv=”Cache-Control” content=”no-cache”/>
</head>
<card id=”add” title=”经典WAP留言本”>
<p>
<a href=”add.asp”>发表新贴</a><br/>
<%
For i=1 to Rs.PageSize
If Rs.Eof Then
Response.Write “没有留言了!<br/>”
Exit For
End If
%>
(<%=Rs(“ID”)%>) <%=outHTM(Rs(“Title”))%><br/>
内容:<%=outHTM(Rs(“Content”))%><br/>
留言者:<%=outHTM(Rs(“Name”))%><br/>
时间:<%=outHTM(Rs(“CreatTime”))%><br/>
回复:<%
if Rs(“Reply”)<>””then
Response.Write outHTM(Rs(“Reply”))
else
Response.Write ““暂无回复””
end if
%><br/>
------<br/>
<%
Rs.MoveNext
Next
if page>=Rs.PageCount then
‘Response.Write (“[下一页]”)
else
Response.Write(“[<a href=’index.asp?Page=” & (Page+1) & “‘>下一页</a>]”)
end if
if page<=1 then
‘Response.Write (“[上一页] “)
else
Response.Write(“[<a href=’index.asp?Page=” & (Page-1) & “‘>上一页</a>]”)
end if
%>
<br/><a h ref=”add.asp”>发表新贴</a>
</p>
<p>
有任何疑问,请访问:http://www.designer5.net 或<br/>
蓝色理想论坛WAP版:http://www.blueidea.com/bbs<br/>
广告:蓝色理想WAP网站改版了,<a href=”http://wap.blueidea.com”>http://wap.blueidea.com</a><br/>
如果您有WAP站点,并参考了此程序,请做上http://wap.blueidea.com的连接
</p>
</card>
</wml>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
后台管理页面admin.asp,代码如下:
<%@LANGUAGE=”VBSCRIPT” CODEPAGE=”65001″%>
<!–#include file=”conn.asp”–>
<%
Function inWML(str)
‘ 把字符串存入数据库,单引号过滤
sTemp = Replace(str, Chr(39), “‘”) ‘单引号过滤
inWML = sTemp
End Function
IF (Request.Form(“Flag”)=”ReplySave”) Then
Id = Request.Form(“Id”)
Name = inWml(Request.Form(“Name”))
Title = inWml(Request.Form(“Title”))
Content = inWml(Request.Form(“Content”))
Reply = inWml(Request.Form(“Reply”))
‘可修改用户留言,是为了避免用户输入非法信息
Sql = “UPDATE GuestBook SET Name = ‘”&Name&”‘, ”
Sql = Sql + “Title = ‘”&Title&”‘, ”
Sql = Sql + “Content = ‘”&Content&”‘, ”
Sql = Sql + “Reply
= ‘”&Reply&”‘ ”
Sql = Sql + ” WHERE Id = “&Id
Conn.ExeCute Sql
Conn.Close
Set Conn = Nothing
Response.Redirect(“admin.asp”)
End IF
IF (Request.QueryString(“Action”)=”Del”) Then
Sql = “DELETE FROM GuestBook WHERE Id=” & Request.QueryString(“Id”)
Conn.Execute Sql
Conn.Close
Set Conn = Nothing
Response.Redirect(“admin.asp”)
End IF
%>
<%
Set Rs=Server.CreateObject(“adodb.Recordset”)
Sql = “SELECT * FROM GuestBook ORDER BY Id Desc”
Rs.open Sql,conn,3,3
Page = Request.QueryString(“Page”)
Rs.PageSize = 10 ‘一页6条记录
IF Not IsEmpty(Page) Then
IF Not IsNumeric(Page) Then ‘判断Page是否为数字
Page=1
Else
Page=Cint(Page) ‘转换成短整形Integer
End IF
IF Page > Rs.PageCount Then
Rs.AbsolutePage = Rs.PageCount ‘设置当前显示页等于最后一页
ElseIF Page <= 0 Then
Rs.AbsolutePage = 1 ‘设置当前页等于第一页
Else
Rs.AbsolutePage = Page ‘如果大于零,显示当前页等于接收的页数
End IF
Else
Rs.AbsolutePage = 1
End IF
Page = Rs.AbsolutePage
%>
<!DOCTYPE
HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<title>经典WAP留言本</title>
<style type=”text/css”>
body, td{font-size:12px;}
p{line-height:22px;}
</style>
<script language=”javascript” type=”text/javascript” charset=”utf-8″>
<!–
function check_form1()
{
if (document.form1.Reply.value==””){
alert(“请填写回复内容!”);
document.form1.Reply.focus();
}
else{return true;}
return false;
}
–>
</script>
</head>
<body>
<table width=”600″ border=”0″ align=”center” cellpadding=”1″ cellspacing=”1″ bgcolor=”#2D96FF”>
<tr align=”center” bgcolor=”#D0E8FF”>
<td height=”70″ colspan=”8″><p><strong>经典WAP留言本</strong></p>
<p><strong>制作:</strong><strong><a href=”http://www.designer5.net” target=”_blank”>D5S工作室</a> 作者:yytcpt</strong></p>
</td>
</tr>
<tr align=”center” bgcolor=”#9BCDFF”>
<td height=”25″><strong>ID</strong></td>
<td><st rong>留言者</strong></td>
<td><strong>标题</strong></td>
<td><strong>留言内容</strong></td>
<td><strong>提交方式</strong></td>
<td><strong>留言时间</strong></td>
<td width=”34″><strong>回复</strong></td>
<td><strong>删除</strong></td>
</tr>
<%
For i=1 to Rs.PageSize
If Rs.Eof Then
Exit For
End If
%>
<tr bgcolor=”#C8E3FF” onMouseOver=”javascript:this.bgColor=’#9BCDFF’;” onMouseOut=”javascript:this.bgColor=’#C8E3FF’;”>
<td width=”19″ height=”25″ align=”center”><%=Rs(“Id”)%></td>
<td width=”48″ align=”center”><%=Rs(“Name”)%></td>
<td width=”53″ align=”center”><%=Rs(“Title”)%></td>
<td width=”247″ align=”left”><%=Rs(“Content”)%> </td>
<td width=”53″ align=”center”><%=Rs(“Method”)%></td>
<td width=”76″ align=”center”><%=Rs(“CreatTime”)%></td>
<td align=”center”><a href=”admin.asp?Action=Reply&Id=<%=Rs(“Id”)%>”>回复</a></td>
<td width=”45″ align=”center”><a href=”javascript:if(confirm(‘确实要删除吗?’))location=’admin.asp?Action=Del&Id=<%=Rs(“Id”)%>'”>删除 </a></td>
</tr>
<%
Rs.MoveNext
Next
%>
<tr align=”center” bgcolor=”#9BCDFF”>
<td height=”25″ colspan=”8″>
<%
Response.Write(“<form name=page method=get onsubmit=””document.location = ‘admin.asp?Page=’+this.page.value;return false;””>”)
if page<=1 then
Response.Write (“[首页] [上一页] “)
else
Response.Write(“[<a href=admin.asp?Page=1>首页</a>] “)
Response.Write(“[<a href=admin.asp?Page=” & (Page-1) & “>上一页</a>] “)
end if
if page>=Rs.PageCount then
Response.Write (“[下一页] [尾页]”)
else
Response.Write(“[<a href=admin.asp?Page=” & (Page+1) & “>下一页</a>] “)
Response.Write(“[<a href=admin.asp?Page=” & Rs.PageCount & “>尾页</a>]”)
end if
Response.Write(“[页次:<font color=red>” & page & “[/red]/” & Rs.PageCount)
Response.Write(“] [共” & Rs.RecordCount & “条 <font color=red>”& Rs.PageSize & “[/red]条/页]”)
Response.Write(” 转到” & “<input name=page size=4 value=” & page & “>” & “页<input type=submit value=go></form>”)
%>
</td> </tr>
<tr align=”center”>
<td height=”30″ colspan=”8″ bgcolor=”#C8E3FF”><p> 有任何疑问,请访问<a href=”http://www.designer5.net”> <strong>http://www.designer5.net</strong></a> 或<strong><a href=”http://www.blueidea.com/bbs” target=”_blank”> </a></strong><a href=”http://www.blueidea.com/bbs” target=”_blank”><strong> </strong></a><strong><a href=”http://www.blueidea.com/bbs” target=”_blank”>蓝色理想论坛WAP版块</a></strong><br/>
<strong>广告:</strong>蓝色理想WAP网站改版了,请使用手机访问<a href=”http://wap.blueidea.com”><strong>http://wap.blueidea.com</strong></a><br/>
如果您有WAP站点,并参考了此程序,请做上http://wap.blueidea.com的连接</p></td>
</tr>
</table>
<p> </p>
<%
IF (Request.QueryString(“Action”)=”Reply”) Then
Set Rs=Server.CreateObject(“adodb.Recordset”)
Sql = “SELECT * FROM GuestBook WHERE Id =”&Request.QueryString(“Id”)
Rs.open Sql,conn,3,3
%>
<table width=”333″ border=”0″ align=”center” cellpadding=”0″ cellspacing=”0″ bgcolor=”#C8E3FF”>
<form name=”form1″ method=”post” action=”admin.asp ” onsubmit=”javascript:return check_form1()”>
<tr>
<td width=”69″><strong>ID</strong></td>
<td width=”264″><%=Rs(“Id”)%></td>
</tr>
<tr>
<td><strong>留言者</strong></td>
<td>
<input name=”Name” type=”text” value=”<%=Rs(“Name”)%>” size=”20″>
</td>
</tr>
<tr>
<td><strong>标题</strong></td>
<td><input name=”Title” type=”text” value=”<%=Rs(“Title”)%>” size=”20″></td>
</tr>
<tr>
<td><strong>留言时间</strong></td>
<td><%=Rs(“CreatTime”)%></td>
</tr>
<tr>
<td><strong>留言内容</strong></td>
<td><textarea name=”Content” cols=”30″ rows=”4″><%=Rs(“Content”)%> |
|
LenaShopogolik 2009/08/06 13:58
I am going to be doing some anal only on my site just for you!!!!
Sdanektir 2009/08/06 23:25
Hey, if I were currently immersed in writing a book explaining set theory, it would have sounded like that to me too, I’m sure.
ElenaLisvato 2009/08/07 03:07
Thank you for your help!
dimagromovfoto 2009/08/15 21:59
thanks for the great information…