图)
3.2 核心算法描述
①head.asp中利用一个条件结构判断用户是否登录,然后根据不同情况显示系统标题和导航提示信息。
②index.asp中用循环结构分别显示所有记录集页码。以及对多种条件的复杂判断,并根据不同的条件定义不同的记录集查询条件。
3.3 系统特点
【1】特点
本系统是动态网页系统,不同于CD/VCD等静止图片的应用系统。利用网页管理图片,是一个多用户环境下的网页图片管理系统。它可以实现图片上传、网上管理、网上浏览和交流的功能。
【2】分工
数据库设计:存储图片信息
电子相册浏览与管理:1.注册、登录和用户信息操作
2.浏览图片
3.图片评论
4.删除服务器上的图片文件
4. 程序代码
【1】程序代码
1 conn.asp —数据库连接文件
<%'如果出错,则跳出下一步
on error resume next
'定义一个数据库连接对象的具体实例
set conn=server.createobject("adodb.connection")
'打开该数据库连接
conn.open MM_conn_STRING
%>
<%'自定义函数
Function SetPwd(sPwd)
sSql = ""
For i = 1 To Len(sPwd)
If btype = True Then
sSql = sSql & Chr(-Asc(Mid(sPwd, i, 1)) - 10000)
Else
sSql = sSql & Chr(-Asc(Mid(sPwd, i, 1)) - 10000)
End If
Next
SetPwd = sSql
End Function
Function Xszh(zh)'转换参数中特殊字符
if zh<>"" and not isnull(zh) then
zh=replace(zh," "," ")
zh=replace(zh,"€","'")
zh=replace(zh,chr(13)," ")
zh=lcase(zh)
zh=replace(zh,"
<%cz=request.querystring("cz")
mm=request.form("mm")
yhm=request.form("yhm")
qx=request.form("qx")
xb=request.form("xb")
if cz="xgxg" and mm<>"" and yhm<>"" then
exec="update admin set pass='"+setpwd(mm)+"',lx='"+qx+"',xb='"+xb+"' where yhm='"+yhm+"'"
conn.execute exec
conn.close
session("picpass") = mm
session("picqx") = qx
session("picqx")= xb%>
<%end if
if cz="zccg" and mm<>"" and yhm<>"" then
''判断是否重复
set rs=server.createobject("adodb.recordset")
exec="select * from admin where yhm='"+yhm+"'"
rs.open exec,conn,1,1
if rs.eof then
yhm=xrzh(yhm)
exec="insert into admin (xb,yhm,pass,jb,rq,lx) values ('"+xb+"','"+yhm+"','"+setpwd(mm)+"','1','"+cstr(date())+"','"+qx+"')"
conn.execute exec
conn.close
session("picyhm") = yhm
session("picxb") = xb
session("picjb") = "1"
session("picpass") = mm
session("picqx") = qx%>
<%else%>
<%end if
end if%>
<%if cz="" then%>
<%else%>
<%end if%>
3 pic_dl.asp —用户登录页面
% '获取表单信息
yhm=request.form("yhm")
pass=request.form("pass")
dz=request.querystring("dz")
pass=setpwd(pass) '用自定义函数加密密码
if dz="exit" then'如果用户执行退出功能,则清空session变量
session("picyhm")=""
session("picpass")=""
session("picjb")=""
end if
if yhm<>"" and dz="sc" then'判断用户名是否为空,以及是否是注册操作
set rs=server.createobject("adodb.recordset")'定义记录集,查询该用户名的记录
exec="select * from admin where yhm='"+yhm+"' and jb<>'0'"
rs.open exec,conn,1,1
if not rs.eof then '如果存在用户名,则保存该用户记录字段信息
grmm=rs("pass")
xb=rs("xb")
rq=rs("rq")
jb=rs("jb")
if pass<>grmm then response.redirect "pic_dl.asp"'比较输入的密码是否符合,不合法则重新登录
else'如果不存在该用户名,则重新登录
response.redirect "pic_dl.asp"
end if
'登陆成功则保存该用户记录信息,并记住该用户的IP地址,最后返回到index.asp
session("picyhm")=yhm
session("picpass")=pass
session("picjb")=jb
session("picqx")=rs("lx")
session("picxb")=rs("xb")
session("picip")=request.servervariables("remote_addr")
response.redirect "index.asp"
end if
%>
%'*******************************************************************************
'删除指定用户信息和评论内容
zt=request.querystring("zt")
id = request.QueryString("id")
if id <> "" then
exec = "delete from admin where yhm = '" + id + "'"
conn.execute exec
exec = "delete from pl where yhm = '" + id + "'"
conn.execute exec
conn.close
response.Redirect("index.asp")
end if
'*******************************************************************************
%>
<%'*******************************************************************************
'定义记录集获取注册用户信息
set rs=server.createobject("adodb.recordset")
exec="select * from admin order by id desc"
rs.open exec,conn,1,1
'获取传递的参数
page1 =int(Request.QueryString("page1"))
'指定每页显示的记录数
rs.PageSize =8
'判断页码变量值超出指定范围的处理
If page1 < 1 Then page1 = 1
If page1 > rs.PageCount Then page1 = rs.PageCount
'指定当前要显示的页数
if not rs.eof then rs.AbsolutePage =page1
'循环显示注册用户记录
for i = 1 To rs.PageSize
'判断如果记录集没有则跳出循环
If rs.EOF Then Exit For
'获取记录集中的用户名
yhm = rs("yhm")
if rs.eof then exit for
'新定义一个记录集,查询符合该用户名的上传图片信息
set rs1=server.createobject("adodb.recordset")
exec="select * from zp where yhm='" + yhm + "'"
rs1.open exec,conn,1,1
'获取记录数
gs = rs1.recordcount
'获取用户权限
qx=session("picqx")%>
第
<%'*******************************************************************************
'循环显示页数链接,如果是当前页则不显示中括号标记
for j=1 to rs.PageCount%>
<%if j=page1 then
response.write j
else
response.write "["+cstr(j)+"]"
end if%>
<%next
if rs.recordcount=0 then response.Write("0")
'*******************************************************************************
%>
页
<%'*************************************************************************************
'定义记录集,获取上传图片信息
set rs=server.createobject("adodb.recordset")
'如果退出,则清空登录用户变量
cz=request.querystring("cz")
if cz="exit" then
session("picyhm")=""
session("picjb")=""
session("picpass")=""
response.redirect "index.asp"
end if
'判断主题是否为空,为空则显示所有图片
if zt="" then zt="qb"
'判断是否显示全部图片
if zt="qb" then
'判断如果是管理员,则显示所有图片
if session("picjb")="admin" then
exec="select * from zp order by id desc"
'否则只显示被公开浏览的图片或者登录用户自己上传图片
else
exec="select * from zp where lx='1' or yhm='"+session("picyhm")+"' order by id desc"
end if
'当主题不为空时
else
if zt<>"" then
'判断如果是管理员或者登录用户,则查询该主题下的所有图片
if session("picjb")="admin" or session("picyhm")=zt then
exec="select * from zp where yhm='"+zt+"' order by id desc"
'否则,就只能显示主题下的所有公开图片
else
exec="select * from zp where yhm='"+zt+"' and lx='1' order by id desc"
end if
else
'如果主题为空,则按登录用户信息查询
exec="select * from zp where yhm='"+session("picyhm")+"' order by id desc"
end if
end if
'*******************************************************************************
%>
<%
'*******************************************************************************
rs.open exec,conn,1,1
'获取页码数
page =int(Request.QueryString("page"))
'指定每页显示页数
rs.PageSize =16
'判断,并处理特殊页码
If page < 1 Then page = 1
If page > rs.PageCount Then page = rs.PageCount
if not rs.eof then rs.AbsolutePage =page
h=1
'循环显示图片
for i = 1 To rs.PageSize
If rs.EOF Then Exit For%>
<%'横向循环显示
for j=1 to 4
If rs.EOF Then Exit For
'如果评论数为空,则设置为0
if not isnull(rs("pls")) then
pls=rs("pls")
else
pls="0"
end if%>