password=replace(trim(Request("password")),"","")
set rs=server.createobject("adodb.recordset")
sql="select * from admin where password="&password&" and username="&username&""
rs.open sql,conn,1,1
if not(rs.bof and rs.eof) then
if password=rs("password") then
session("admin")=rs("username")
session("flag")=rs("flag")
else
end if
else
end if
...
%>
username和password是从用户表单输入传递过来的值,你一定要注意用replace处理一次后再和数据库中存储的值进行对比。因为我们知道username=username是恒等的,必须把用户输入的去掉。
通过验证后建立一个session变量,可以很方便的在各个管理页面中进行管理。
要对用户进行验证的页面可以这样写:
<%if session("admin")="" then
response.write "no access"
else
...
end if
%>
有人在数据处理的页面会遗忘写这个验证,这是非常危险的,用户可以通过这个缺陷非法提交数据。
再来说说如何收集用户信息,这似乎都不涉及到太多技术了,一般可以这么做,比如你站点的特色是提供自主产权的软件下载,你可以让用户在下载前填写用户信息表,这个方法在外国网站用的比较多,在中国还很少见,我的网站就拥有这个功能,让我轻松的知道来自美国和新西兰的用户比较多。
在进行后台管理开发的时候还往往遇到这个问题,为不同的管理员分配不同的权限。仅以西路整站系统讲一种方法。在上面验证用户的时候我们还将flag写入了session变量,我们可以通过flag来判断用户级别,当然前提是你已经为flag分配了不同的值。具体可以这样实现:
<%
select case session("flag")
case "1"
case "9"
case "10"
case else
%>
<script language="javascript">
if (confirm("您的操作权限不够(进入站点新闻设置界面需要第1或9,10级权限),系统拒绝你的访问,请点确定返回,或者点取消退出重新登录"))
location.href=http://www.webjx.com/htmldata/2005-12-18/"admin.asp";
else
location.href=http://www.webjx.com/htmldata/2005-12-18/"quit.asp";
</script>
<%end select%>
以上确定了三种级别可以进入该操作页面的管理员。当然这里仅仅是说明了一种简单的验证方法,其实你亦可以使用split函数等来确定用户权限。
| 对此文章发表了评论 |
