因 因为有朋问我留言系统怎么来做,其实太简单啦,不过为了给大家说清楚还是决定做一个教程来说明如何制作,因为时间的问题,只能略详细的给大家把Code编出来,大家先自己看,不明白的给我QQ留言!
其实在做一个项目的时候,不管项目的大小都要先对项目进行业务的简单分析,然后通过业务的需求实例化出我们的数据库结构. 我们做的是一个留言系统,为啦能让大家更好的理解和掌握,所以我尽量以实例来说!
首先我们要设计出我们的数据库,根据业务需求,我们这个留言系统最大在线人数一般在20人以内,按照这个并发量我们就直接选择Microsoft 的ACCESS做为我们的数据库产品! 而不去选择SQL server or Mysql啦!
我们要建立两张表分别是 Admin(用来存储管理员的相关信息) Message(用来存储留言者的信息及其留言内容和回复内容)
Admin表中有---Id,Username,Password 三个字段
Message表中有 m_id,m_name,m_qq,m_email,m_content,m_attrib.m_time七个字段.
设计完数据库后,我们就要使用HTML来布局出我们留言系统的雏形来,在使用CSS来美化修饰页面布局;设计草图如下:(仅仅是草图,所以大家在做的时候一定要用心做,相信大家一定比我做的好,我只是为了实现教程,所以有些简略)
下来我们来分析下我们的留言系统有几个主要页面组成:
index.asp(留言系统首页)
功能:
1.默认的留言及其浏览页面(还有一个附加的首页Default.asp,和index.asp页面一样只是为了不同的请求处理.
Default.asp页面编码(<%response.redirect "index.asp"%>)就这一句实现跳转到index,asp页面
insert.asp(首页留言信息的后台处理页面)
功能:
1.实现首页信息写入数据库中.
admin.asp(管理员管理页面)
功能:
1.实现留言的管理的相关事项.如删除留言,回复留言等.
2.留言系统的相关设置,如,动态改变版权,标题,每页要显示的留言条数.
conn.asp(数据库连接处理页面)
功能:
1.实现程序同数据库的访问,通过server对象来创建一个object建立Connection
js.js(合法性数据验证页面)
功能
1.实现首先数据提交的合法性验证;
基本这个留言系统就由这几个文件组成;后面开发要是需要我们再增加页面!
下面我们就要正式的开始,用ASP语言来实现我们的留言系统:
首先我们建立一个---------Conn.asp的文件,我们运用ADO技术来连接上我们建立好的数据库Worm.mdb
代码如下:
/
下面是首页留言处理的后台程序-------insert.asp文件
/
其实在做一个项目的时候,不管项目的大小都要先对项目进行业务的简单分析,然后通过业务的需求实例化出我们的数据库结构. 我们做的是一个留言系统,为啦能让大家更好的理解和掌握,所以我尽量以实例来说!
首先我们要设计出我们的数据库,根据业务需求,我们这个留言系统最大在线人数一般在20人以内,按照这个并发量我们就直接选择Microsoft 的ACCESS做为我们的数据库产品! 而不去选择SQL server or Mysql啦!
我们要建立两张表分别是 Admin(用来存储管理员的相关信息) Message(用来存储留言者的信息及其留言内容和回复内容)
Admin表中有---Id,Username,Password 三个字段
Message表中有 m_id,m_name,m_qq,m_email,m_content,m_attrib.m_time七个字段.
设计完数据库后,我们就要使用HTML来布局出我们留言系统的雏形来,在使用CSS来美化修饰页面布局;设计草图如下:(仅仅是草图,所以大家在做的时候一定要用心做,相信大家一定比我做的好,我只是为了实现教程,所以有些简略)
下来我们来分析下我们的留言系统有几个主要页面组成:
index.asp(留言系统首页)
功能:
1.默认的留言及其浏览页面(还有一个附加的首页Default.asp,和index.asp页面一样只是为了不同的请求处理.
Default.asp页面编码(<%response.redirect "index.asp"%>)就这一句实现跳转到index,asp页面
insert.asp(首页留言信息的后台处理页面)
功能:
1.实现首页信息写入数据库中.
admin.asp(管理员管理页面)
功能:
1.实现留言的管理的相关事项.如删除留言,回复留言等.
2.留言系统的相关设置,如,动态改变版权,标题,每页要显示的留言条数.
conn.asp(数据库连接处理页面)
功能:
1.实现程序同数据库的访问,通过server对象来创建一个object建立Connection
js.js(合法性数据验证页面)
功能
1.实现首先数据提交的合法性验证;
基本这个留言系统就由这几个文件组成;后面开发要是需要我们再增加页面!
下面我们就要正式的开始,用ASP语言来实现我们的留言系统:
首先我们建立一个---------Conn.asp的文件,我们运用ADO技术来连接上我们建立好的数据库Worm.mdb
代码如下:
/
< %
option explicit
dim conn
set conn = server.CreateObject( " adodb.connection " )
conn.open " driver={Microsoft Access driver (*.mdb)};dbq= " & server.MapPath( " worm.mdb " )
% >
/
index.asp 页面将会由两个表单组成,一个是管理员登陆表单,需要在后台处理登陆验证,还有一个就是留言发布表单,其中有这么几个文本字段,Username(留言者昵称),QQ(留言者QQ),Email(留言者Email地址),Content(留言内容),Attrib(留言属性,有Private和Public两个属性);
下面是 -------- js.js文件,用来对发布留言表单合法性的简单验证
/
// JavaScript Document
/*
[360in.cn] (C) 2001 - 2007 Ruoman Inc.
This is a freeware,
$Author: M.A.O
$Revision: 1.0
$ Date : 2007 / 7 / 18
*/
function Check_login()
{
if (document.Admin_L.Login_user = "" )
alert( " 用户名不能为空!!! " );
document.Admin_L.Login_user.focus();
return false ;
}
function check(){
if (document.PostCon.Username.value == "" )
{
alert( " 用户名不能为空!!! " );
document.PostCon.Username.focus();
return false ;
}
var QQ;
QQ = document.PostCon.QQ.value;
if (document.PostCon.QQ.value == "" )
{
alert( " QQ号码不能为空!!! " );
document.PostCon.QQ.focus();
return false ;
}
else
{
if (isNaN(QQ))
{
alert( " 请您正确输入QQ号码!! " );
document.PostCon.QQ.focus();
return false ;}
if (QQ.length > 11 || QQ.length < 5 )
{
alert( " 请检查QQ位数 " );
document.PostCon.QQ.focus();
return false ;}
}
var Content = document.PostCon.Content.value;
var script = " script<>alertredirect "
if (document.PostCon.Content.value == "" )
{
alert( " 留言内容不能为空 " );
document.PostCon.Content.focus();
return false ;
}
// else
// { if (Content.indexOf(script) ! = - 1 )
// alert( " 有非法内容!!! " );
// / document.PostCon.Content.focus();
// this.value == "" ;
// return false ;
// }
document.getElementById( " PostCon " ).submit();
}
function JUMP()
{
window.document.location.href = " index.asp?maomao=521&page= " + document.getElementById( " jumpPage " ).value
}
function clean()
{
if (confirm( " 确认要重置留言吗? " ))
document.PostCon.Content.value = "" ;
else
return false ;
}
function changeImg()
{
var now = new Date ();
var sec = now .getHours();
var result = sec% 4 ;
document.getElementById( " Logo " ).src = " Images/ " + result + " .jpg " ;
// alert(result);
}
function delCon(m_id)
{
if (confirm( " 是否要删除留言? " ))
window.document.location.href = " reCon.asp?act=del&id= " + m_id;
else
return false ;
}
var subWindow;
function openWin(www)
{ subWindow = window.open( ' reCon.asp?act=recontent&id='+www,'','width=500 height=300');
// var Content;
// Content = " <html><head><title>Welcome to my site</title><head><body> "
// Content += " <textarea name='textarea' cols='50' rows='8' align='center'></textarea class='recontent'> "
// Content += " <input type='button' value='This is new Window'></body></html> "
// subWindow.document.write(Content);
}
< %
option explicit
dim conn
set conn = server.CreateObject( " adodb.connection " )
conn.open " driver={Microsoft Access driver (*.mdb)};dbq= " & server.MapPath( " worm.mdb " )
% >
/
index.asp 页面将会由两个表单组成,一个是管理员登陆表单,需要在后台处理登陆验证,还有一个就是留言发布表单,其中有这么几个文本字段,Username(留言者昵称),QQ(留言者QQ),Email(留言者Email地址),Content(留言内容),Attrib(留言属性,有Private和Public两个属性);
下面是 -------- js.js文件,用来对发布留言表单合法性的简单验证
/
// JavaScript Document
/*
[360in.cn] (C) 2001 - 2007 Ruoman Inc.
This is a freeware,
$Author: M.A.O
$Revision: 1.0
$ Date : 2007 / 7 / 18
*/
function Check_login()
{
if (document.Admin_L.Login_user = "" )
alert( " 用户名不能为空!!! " );
document.Admin_L.Login_user.focus();
return false ;
}
function check(){
if (document.PostCon.Username.value == "" )
{
alert( " 用户名不能为空!!! " );
document.PostCon.Username.focus();
return false ;
}
var QQ;
QQ = document.PostCon.QQ.value;
if (document.PostCon.QQ.value == "" )
{
alert( " QQ号码不能为空!!! " );
document.PostCon.QQ.focus();
return false ;
}
else
{
if (isNaN(QQ))
{
alert( " 请您正确输入QQ号码!! " );
document.PostCon.QQ.focus();
return false ;}
if (QQ.length > 11 || QQ.length < 5 )
{
alert( " 请检查QQ位数 " );
document.PostCon.QQ.focus();
return false ;}
}
var Content = document.PostCon.Content.value;
var script = " script<>alertredirect "
if (document.PostCon.Content.value == "" )
{
alert( " 留言内容不能为空 " );
document.PostCon.Content.focus();
return false ;
}
// else
// { if (Content.indexOf(script) ! = - 1 )
// alert( " 有非法内容!!! " );
// / document.PostCon.Content.focus();
// this.value == "" ;
// return false ;
// }
document.getElementById( " PostCon " ).submit();
}
function JUMP()
{
window.document.location.href = " index.asp?maomao=521&page= " + document.getElementById( " jumpPage " ).value
}
function clean()
{
if (confirm( " 确认要重置留言吗? " ))
document.PostCon.Content.value = "" ;
else
return false ;
}
function changeImg()
{
var now = new Date ();
var sec = now .getHours();
var result = sec% 4 ;
document.getElementById( " Logo " ).src = " Images/ " + result + " .jpg " ;
// alert(result);
}
function delCon(m_id)
{
if (confirm( " 是否要删除留言? " ))
window.document.location.href = " reCon.asp?act=del&id= " + m_id;
else
return false ;
}
var subWindow;
function openWin(www)
{ subWindow = window.open( ' reCon.asp?act=recontent&id='+www,'','width=500 height=300');
// var Content;
// Content = " <html><head><title>Welcome to my site</title><head><body> "
// Content += " <textarea name='textarea' cols='50' rows='8' align='center'></textarea class='recontent'> "
// Content += " <input type='button' value='This is new Window'></body></html> "
// subWindow.document.write(Content);
}
/
下面是首页留言处理的后台程序-------insert.asp文件
/
<
!
--
#include file
=
"
conn.asp
"
-->
< %
dim rs,sql
if request.QueryString( " act " ) = "" then
response.Write " <script language='javascript'>window.alert('非法提交');window.document.location.href='index.asp'</script> "
else
set rs = server.CreateObject( " adodb.recordset " )
sql = " Message "
rs.open sql,conn, 1 , 3
rs.addnew
rs( " m_name " ) = request.Form( " Username " )
rs( " m_qq " ) = request.Form( " QQ " )
rs( " m_email " ) = request.Form( " Email " )
rs( " m_content " ) = request.Form( " Content " )
rs( " m_attrib " ) = request.Form( " attrib " )
rs.update
rs.close
set rs = nothing
response.Write " <script language='javascript'>window.alert('发布留言成功!!!');window.document.location.href='index.asp'</script> "
end if
% >
/
为啦让每页显示我们指定的页数,我写好啦一个翻页功能代码 -- 如下 ---
/
// Frist Section
< %
dim rs,sql,pagelist,page
if request.QueryString( " page " ) = "" then
page = 1
else
page = cint (request.QueryString( " page " ))
end if
pagelist = 3
set rs = server.CreateObject( " adodb.recordset " )
sql = " select top " & page * pagelist & " * from Message order by m_id desc "
rs.open sql,conn, 1 , 1
rs.pagesize = pagelist
rs.absolutepage = page
% >
/
/
// Second Section
< %
dim Link,Totalpage,Tnum
Link = " index.asp?maomao=521 "
sql = " select count(*) as num from Message "
rs.open sql,conn, 1 , 1
Tnum = rs( " num " )
Totalpage = Tnum & # 92 ; pagelist
if Tnum mod pagelist > 0 then Totalpage = Totalpage + 1
response.Write " 总 " & Totalpage & " 页 第 " & page & " 页 "
if page = 1 then
response.Write " 首页 上一页 "
else
response.Write " <a href= " & Link & " &page=1> 首页 </a> <a href= " & Link & " &page= " & page - 1 & " > 下一页 </a> "
end if
if page < Totalpage then
response.Write " <a href= " & Link & " &page= " & page + 1 & " >下一页</a> <a href= " & Link & " &page= " & Totalpage & " >末页</a> "
else
response.Write " 下一页 末页 "
end if
% >
/
// 这两段翻页代码都是增加在首先文件index.asp中的!
/
< %
dim rs,sql
if request.QueryString( " act " ) = "" then
response.Write " <script language='javascript'>window.alert('非法提交');window.document.location.href='index.asp'</script> "
else
set rs = server.CreateObject( " adodb.recordset " )
sql = " Message "
rs.open sql,conn, 1 , 3
rs.addnew
rs( " m_name " ) = request.Form( " Username " )
rs( " m_qq " ) = request.Form( " QQ " )
rs( " m_email " ) = request.Form( " Email " )
rs( " m_content " ) = request.Form( " Content " )
rs( " m_attrib " ) = request.Form( " attrib " )
rs.update
rs.close
set rs = nothing
response.Write " <script language='javascript'>window.alert('发布留言成功!!!');window.document.location.href='index.asp'</script> "
end if
% >
/
为啦让每页显示我们指定的页数,我写好啦一个翻页功能代码 -- 如下 ---
/
// Frist Section
< %
dim rs,sql,pagelist,page
if request.QueryString( " page " ) = "" then
page = 1
else
page = cint (request.QueryString( " page " ))
end if
pagelist = 3
set rs = server.CreateObject( " adodb.recordset " )
sql = " select top " & page * pagelist & " * from Message order by m_id desc "
rs.open sql,conn, 1 , 1
rs.pagesize = pagelist
rs.absolutepage = page
% >
/
/
// Second Section
< %
dim Link,Totalpage,Tnum
Link = " index.asp?maomao=521 "
sql = " select count(*) as num from Message "
rs.open sql,conn, 1 , 1
Tnum = rs( " num " )
Totalpage = Tnum & # 92 ; pagelist
if Tnum mod pagelist > 0 then Totalpage = Totalpage + 1
response.Write " 总 " & Totalpage & " 页 第 " & page & " 页 "
if page = 1 then
response.Write " 首页 上一页 "
else
response.Write " <a href= " & Link & " &page=1> 首页 </a> <a href= " & Link & " &page= " & page - 1 & " > 下一页 </a> "
end if
if page < Totalpage then
response.Write " <a href= " & Link & " &page= " & page + 1 & " >下一页</a> <a href= " & Link & " &page= " & Totalpage & " >末页</a> "
else
response.Write " 下一页 末页 "
end if
% >
/
// 这两段翻页代码都是增加在首先文件index.asp中的!
/
管理员的验证登陆页面代码.....如下
CheckLogin.asp
///
<!-- #include file="conn.asp" -->
<%
dim username,password,rs,sql
username = trim(request.Form("Login_user"))
password = trim(request.Form("Login_pass"))
'response.Write username
'response.Write password
if request.QueryString("act")<>"Login" then
response.Write "<script language='javascript'>window.alert('非法参数');history.go(-1);</script>"
else
set rs = server.CreateObject("adodb.recordset")
sql ="select * from Admin"
rs.open sql,conn,1,1
if username <> rs("Username") or password <> rs("Password") then
response.Write "<script>window.alert('用户名密码错误');history.go(-1);</script>"
else
Session("Admin_name") = username
Session("Admin_pass") = password
response.Write "<script language='javascript'>window.alert('欢迎" &Session("Admin_name")& "登陆');history.go(-1);</script>"
end if
end if
%>
//
CheckLogin.asp
///
<!-- #include file="conn.asp" -->
<%
dim username,password,rs,sql
username = trim(request.Form("Login_user"))
password = trim(request.Form("Login_pass"))
'response.Write username
'response.Write password
if request.QueryString("act")<>"Login" then
response.Write "<script language='javascript'>window.alert('非法参数');history.go(-1);</script>"
else
set rs = server.CreateObject("adodb.recordset")
sql ="select * from Admin"
rs.open sql,conn,1,1
if username <> rs("Username") or password <> rs("Password") then
response.Write "<script>window.alert('用户名密码错误');history.go(-1);</script>"
else
Session("Admin_name") = username
Session("Admin_pass") = password
response.Write "<script language='javascript'>window.alert('欢迎" &Session("Admin_name")& "登陆');history.go(-1);</script>"
end if
end if
%>
//
留言处理页面 一 reCon.asp
//
< %
dim rs,sql
if request.QueryString( " act " ) = " del " then
sql = " delete from Message where m_id= " & request.QueryString( " id " )
conn.execute sql
response.Write " <script language='javascript'>document.location.href='index.asp'</script> "
% >
< %
else
if request.QueryString( " act " ) = " recontent " then
' sql = "update Message set m_recontent='" &request.Form("Recontent")& "' where m_id="&request.QueryString("id")
' conn.execute sql
set rs = server.CreateObject( " adodb.recordset " )
' sql = "Update Message set m_recontent='" &request.Form("Recontent")& "' where m_id="&request.QueryString("id")
' conn.execute sql
sql = " select * from Message where m_id= " & request.QueryString( " id " )
rs.open sql,conn, 1 , 1
' rs("m_recontent") = request.Form("Recontent")
' rs.update
end if
% >
< %
end if
% >
//
留言处理页面2 ------------- backCon.asp
< ! -- #include file = " conn.asp " -->
< %
if request.QueryString( " act " ) = " backCon " then
if request.form( " Recontent " ) = "" then
response.write " <script language='javascript'>alert('回复不能为空');location.href='reCon.asp';</script> "
else
dim val,sql
val = request.Form( " Recontent " )
sql = " update Message set m_recontent=' " & val & " ' where m_id= " & request.QueryString( " id " )
conn.execute sql
response.Write " <script language='javascript'>window.alert('回复留言成功!!!');this.close();</script> "
end if
else
response.Redirect( " index.asp " )
end if
% >
///
//
< %
dim rs,sql
if request.QueryString( " act " ) = " del " then
sql = " delete from Message where m_id= " & request.QueryString( " id " )
conn.execute sql
response.Write " <script language='javascript'>document.location.href='index.asp'</script> "
% >
< %
else
if request.QueryString( " act " ) = " recontent " then
' sql = "update Message set m_recontent='" &request.Form("Recontent")& "' where m_id="&request.QueryString("id")
' conn.execute sql
set rs = server.CreateObject( " adodb.recordset " )
' sql = "Update Message set m_recontent='" &request.Form("Recontent")& "' where m_id="&request.QueryString("id")
' conn.execute sql
sql = " select * from Message where m_id= " & request.QueryString( " id " )
rs.open sql,conn, 1 , 1
' rs("m_recontent") = request.Form("Recontent")
' rs.update
end if
% >
< %
end if
% >
//
留言处理页面2 ------------- backCon.asp
< ! -- #include file = " conn.asp " -->
< %
if request.QueryString( " act " ) = " backCon " then
if request.form( " Recontent " ) = "" then
response.write " <script language='javascript'>alert('回复不能为空');location.href='reCon.asp';</script> "
else
dim val,sql
val = request.Form( " Recontent " )
sql = " update Message set m_recontent=' " & val & " ' where m_id= " & request.QueryString( " id " )
conn.execute sql
response.Write " <script language='javascript'>window.alert('回复留言成功!!!');this.close();</script> "
end if
else
response.Redirect( " index.asp " )
end if
% >
///