赞
踩
这是突击一个星期的菜鸡作业,提供给大家进行分享学习,是基于ASP、VBScript的旅客主题动态网站,有登录注册、在线留言功能,连接了本地数据库,需要配置好IIS环境,然后把文件夹放到IIS文件夹中,浏览器输入http://localhost/文件名.asp,即可打开。
网盘链接:https://pan.baidu.com/s/19f5T6h-7thy_3dbiOKyhCg
提取码:ffbv
基于Ajax技术的旅客主题网页开发
摘要:本报告主要围绕《Traveller旅客网站》作品进行阐述,内容分为作品介绍、作品设计与开发,作品效果展示以及工作分析与总结四部分。
关键词:Ajax技术 ASP程序 jQuery框架 Access数据库 VBScript
《Traveller旅客网站》,一个为旅客提供景点推荐和交流分享平台的旅游网站,在灵活结合与运用自己已有的HTML开发知识,以及在动态网页课程上所学到的新知识后,所开发出来的一个较为完整的网站。
此网站分为五个页面:
1、登录页面
用户可进行登录操作,登录成功后,即可进入网站首页。
2、注册页面
用户可进行注册操作,注册成功后,即可凭新账号及密码登录网站。
3、修改密码页面
用户可进行修改密码操作,修改成功后,即可凭原账号及新密码登录网站。
4、首页页面
此页面为用户提供景点的推荐和介绍。点击景点后,用户可以查看最新各个景点的介绍,如果是管理员可以进行景点的后台信息更新。
景点介绍:
5、留言页面
此页面是旅客之间交流分享的页面,用户可在此处查看其他旅客的留言记录,用户与用户之间的交流更加便利。
留言板:
1、界面设计
网站配色主题是简约和大气的风格,字体设为灰色或黑色,主要展示景点的信息,提升视觉上的满足感,使网站更加符合旅游主题。
网页的内容均为白底矩形,排版是比较简约现代的形式,条理清晰地向用户展示各项内容。
2、结构设计
3、功能设计
此网站功能包括:注册帐号、修改密码、登录帐号、景点推荐、交流分享、联系我们等。在用户的各项操作中,均存在一定的交互性,如注册时帐号密码填写格式不正确,该网页会返回错误提示,提醒用户重新填写。
4、核心开发
- <% '-----------------------连接数据库---------------------------------
- Dim conn
- Set conn=Server.CreateObject("ADODB.Connection")
- dp = "data\yh.mdb" '相对本文件的数据库位置
- conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&dp&"")
- <!-- '-----------------------创建记录集--------------------------------- -->
- <!-- Set rs = conn.Execute("Select * From yh Order By ID DESC") -->
- %>
此功能依赖于一个register.asp(需要引入上面的头文件)。
<!--#include file="conn.asp" -->
在register.asp中,用户在表单中填写基本信息,用户填写完后,用Ajax技术提交表单内容,通过asp程序将注册信息插入到数据库的yhmm表。
填写表单代码(当然可以自行更改样式):
- <form method="post" action="?state=reg" class="a">
- <table align="center" >
- <tr>
- <td colspan="2">
- <h1 align="center" style="color:rgb(1, 178, 223)">用户注册</h1>
- </td>
- </tr>
- <tr>
- <td>账号/用户名</td>
- <td><input type="text" name="username" autocomplete="off" id="input" placeholder="4-16个字符"></td>
- </tr>
- <tr>
- <td>密码</td>
- <td><input type="password" name="password" id="input" placeholder="6-16位字母或数字组合"></td>
- </tr>
- <tr>
- <td>再次输入密码</td>
- <td><input type="password" name="password_again" id="input" placeholder="再次输入密码"></td>
- </tr>
- <!-- <tr>
- <td>性别</td>
- <td>
- <select name="sex" id="selectlist">
- <option value="男">男</option>
- <option value="女">女</option>
- </select>
- </td>
- </tr>
- <tr>
- <td>身份</td>
- <td>
- <select name="sex" id="selectlist">
- <option value="男">男</option>
- <option value="女">女</option>
- </select>
- </td>
- </tr> -->
- <tr>
- <td>手机号码</td>
- <td><input type="text" name="phone" id="input" placeholder="手机号码"></td>
- </tr>
- <tr>
- <td>邮箱</td>
- <td><input type="text" name="mail" id="input" autocomplete="off" placeholder="邮箱"></td>
- </tr>
- <tr>
- <td></td>
- <td id="small" ><u><a href="login.asp">已有账号?</a></u></td>
- </tr>
- <tr>
- <td colspan="2">
- <div align="center" style="margin: 5px;">
- <input name="button" id="button" type="submit" value="注册">
- </div>
- </td>
- </tr>
- </table>
- </form>
实现注册:
- <!---------------------------------- 注册功能 ----------------------------->
- <%
- if Request.QueryString("state")="reg" then 'if Request.ServerVariables("REQUEST_METHOD")="POST" then
- if request.Form("username")="" or request.Form("password")="" or request.Form("phone")="" or request.Form("mail")="" or request.Form("password_again")="" then
- response.Write("<script>alert('都是必填项!!');history.go(-1);</script>") '判断用户名、密码、手机号、邮箱是否为空,任意一项为空则不通过
- <!-- response.Redirect "register.asp" -->
- else
- if len(request.Form("username")) < 4 then
- '判断用户名是否小于四位数,如果小于四位数就不能通过
- response.Write("<script>alert(' 用户名不能小于四个字');history.go(-1);</script>")
- else
- if len(request.Form("password")) < 5 or len(request.Form("password"))> 16 then
- response.Write("<script>alert('密码不能小于5位,不能大于16位'); history.go(-1);</script>")
- else
- if request.Form("password") <> request.Form("password_again") then
- '两次输入的密码不同
- response.Write("<script>alert('两次输入的密码不同!'); history.go(-1);</script>")
- else
- set rs = server.CreateObject("adodb.recordset")
- rs.open "select * from [yhmm]",conn,1,3
- rs.addnew
- rs("username")=request.Form("username") 'rs("字段")=值
- rs("password")=request.Form("password")
- rs("phone")=request.Form("phone")
- rs("mail")=request.Form("mail")
- rs.update
- response.write "<script>alert('注册成功!!!'); location.href = 'login.asp'</script>"
- '提示注册成功
- ' response.end
- end if
- end if
- end if
- end if
- end if
- %>
此功能依赖于一个modify.asp。
与注册功能类似,用户在该页面的表单中填写信息,先验证填写格式是否正确,再将表单内容传递至自身处理,先根据用户填写的信息在数据库yhmm表中查找,如有记录集,则表示用户填写的信息均正确,允许修改,修改完成再跳转至Login.asp登录页面。修改失败将返回错误提示。
代码:
- <!------------------------- 修改密码 ---------------------------->
- <% if request.QueryString("state")="mdy" then '判断是否是登录状态
- response.write("modifying...")
- us = trim(request.Form("username"))
- ph = trim(request.Form("phone"))
- em = trim(request.Form("email"))
- pw = trim(request.Form("password"))
- pwa = trim(request.Form("password_again"))
- if us = "" or ph = "" or em = "" then
- response.Write("<script>alert('都是必填项!');history.go(-1);</script>") '提示返回
- else
- '查询是否在数据库里
- set rs = server.CreateObject("adodb.recordset")
- sql = "select * from [yhmm] where username='"&us&"'"
- rs.open sql,conn,1,1 '1,1是只读数据,1,3是插入数据,2,3是修改数据
- if not rs.eof then '非空,就是有该数据
- if rs("phone") = ph then '密码也正确
- session("username") = rs("username")
- '一类用来在客户端和服务器之间保持状态的解决方案 ④。有时候session也用来指这种解决方案的存储结构,如“把xxx保存在session里”
- session("phone")=rs("phone")
- session("mail")=rs("mail")
- session("ident")=rs("ident")
- 'response.write "<script>alert('手机正确!!!'); parent.window.history.go(-1);</script>"
- if rs("mail") = em then '邮箱正确
- 'response.write "<script>alert('邮箱正确!!!'); parent.window.history.go(-1);</script>"
- if rs("password") = pw then '密码相同
- response.write "<script>alert('密码不能和原密码相同!!!'); parent.window.history.go(-1);</script>"
- else
- if len(request.Form("password")) < 5 or len(request.Form("password"))> 16 then
- response.write "<script>alert('密码不能小于5位,不能大于16位'); parent.window.history.go(-1);</script>"
- else
- if pw = pwa then
- set rs = server.CreateObject("adodb.recordset")
- rs.open "select * from [yhmm] where username='"&us&"'",conn,1,3
- rs("password")=request.Form("password")
- rs.update
- response.write "<script>alert('密码修改成功!!'); location.href = 'login.asp';</script>"
- end if
- end if
- end if
- else
- response.write "<script>alert('邮箱不正确!!!'); parent.window.history.go(-1);</script>"
- end if
- else
- response.write "<script>alert('密码错误!!!'); parent.window.history.go(-1);</script>"
- end if '结束判断
- else
- response.Write("<script>alert('用户不存在!!!'); parent.window.history.go(-1);</script>")
- end if
- end if
- end if
- %>
此功能依赖于一个login.asp。
同理,与注册和修改密码功能类似,用户在login.asp的表单中填写信息,先验证填写格式是否正确,再将表单内容传递至自身处理,根据用户填写的信息在数据库yhmm表中查找,如有记录集,则表示用户帐号及密码填写正确,asp创建session对象记录帐号信息,再跳转至index.asp登录页面。登录失败将返回错误提示。
代码:
- <!----------------------------- 登录 ------------------------------->
- <% if request.QueryString("state")="login" then '判断是否是登录状态
- response.write("login...")
- us = trim(request.Form("username"))
- pw = trim(request.Form("password"))
- if us = "" or pw = "" then
- response.Write("<script>alert('用户名和密码不能为空!');history.go(-1);</script>") '提示返回
- else
- '查询是否在数据库里
- set rs = server.CreateObject("adodb.recordset")
- sql = "select * from [yhmm] where username='"&us&"'"
- rs.open sql,conn,1,1 '1,1是只读数据,1,3是插入数据,2,3是修改数据
- if not rs.eof then '非空,就是有该数据
- if rs("password") = pw then '密码也正确
- session("username") = rs("username")
- '一类用来在客户端和服务器之间保持状态的解决方案 ④。有时候session也用来指这种解决方案的存储结构,如“把xxx保存在session里”
- session("phone")=rs("phone")'这里的session可以在登录后的首页读取
- session("mail")=rs("mail")
- session("ident")=rs("ident")
- response.write "<script>alert('登录成功!!!'); location.href = 'index.asp?in=1'</script>"
- else
- response.write "<script>alert('密码错误!!!'); parent.window.history.go(-1);</script>"
- end if '结束判断
- else
- response.Write("<script>alert('用户不存在!!!'); parent.window.history.go(-1);</script>")
- end if
- end if
- end if
- %>
由于景点新的更新需要读取数据库中的图片和其他信息,没有基本信息则无法呈现景点信息。在用户主界面选择景点后,将该景点对应的序号作为参数传递到景点呈现界面,然后在index_intro.asp中获取该参数,并以此查找景点对应的记录集,将其中的文字图片等信息进行读取和显示。管理员可以在后台进行内容更新。
主要难的是读取图片,这里我用access的text来存储图片路径,然后在asp中读取
在用户选择景点后跳转传递参数到这个asp中:
<a href="index_intro.asp?sid=1"></a>
然后这里获取sid的值 : request("sid")
- <!------------------------- 景点介绍 ----------------------------------->
- <%
- if IsEmpty(request("sid")) then
- response.write "传递参数为空!"
- end if
- set rs=server.CreateObject("adodb.recordset") '创建记录对象
- Sql="select * from spots where sid="&request("sid")&"" 'Sql
- rs.open Sql,conn,1,1
-
- if not (rs.eof and rs.bof) then
- ' response.Write "找到景点sid="&request("sid")&"data"
- Name_cn = rs("name_cn")
- Name_en = rs("name_en")
- spot_content = rs("content")
- pic1_src = rs("img1")
- pic2_src = rs("img2")
- pic3_src = rs("img3")
- 'response.write "超链接1为______"&rs("img3")&"_______XXX"
- end if
- %>
- <div>
- <div class="bg_2">
- <div class="title_cn"><% =Name_cn%></div>
- <div class="title_en"><% =Name_en%></div>
- <div style="text-align: center;font-size: smaller;">[内容可在后台管理]</div>
- </div>
- <div class="content">
- <% =spot_content %>
- </div>
- <div>
- <img style="margin-bottom: 30px;" width="900px" height="800px" src="<%=rs("img1")%>" ></div>
- <img style="margin-bottom: 30px;" width="900px" height="800px" src="<%=rs("img2")%>" ></div>
- <img style="margin-bottom: 30px;" width="900px" height="800px" src="<%=rs("img3")%>" ></div>
- </div>
- </table>
留言板信息的无刷新显示
留言区的更新需要及时读取数据库中的留言记录和其他信息,没有基本信息则无法进行留言功能。所以留言区要在每次成功提交留言后进行更新回到当前页面,此处的数据加载形式与景点展示区类似,使用Ajax将客户端请求发送到lyb.asp,在lyb.asp中进行表格数据的更新处理。
另外,利用VBscript和Ajax,对记录集进行操作,一个页面只展现优先的留言数,并且实现了翻页的功能,使得可浏览的信息空间更大。
留言板信息的提交
此处的留言数据加载形式与注册版块类似,将评论内容转化为记录集合形式传递至lyb.asp,并将内容插入数据库,同时对页面进行无刷新更新。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。