关于用户登录问题,帮忙看看这段代码怎么啦??

xuallen 2003-08-18 03:14:22
我的用户表有三个字段:UserID,PWD,Admingroup
如果Admingroup为0就是管理员进入管理界面,如果为1就是普通用户录入界面,可是我的这段代码怎么不能实现呀?
<%
Function CheckPwd( UserID, PWD )
Dim conn, param, rs
connstr="Provider=SQLOLEDB;Data Source=XUJIA;Database=showroom;UID=sa;Pwd="
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr

sql = "Select * From tblUser Where UserID='" & UserID & "' And PWD = '" & PWD & "'"
Set Session("Userrs") = conn.Execute( sql )
If Session("Userrs").EOF Then
CheckPwd = False
Else
CheckPwd = True
End If
sqlAdmingroup="select Admingroup from tblUser where UserID='" & UserID& "'"
set ad=conn.execute(sqlAdmingroup)
End Function
%>

<%
If IsEmpty(Session("Passed")) Then Session("Passed") = False
Head = "<font size='2' face='Arial'>请输入用户名和密码</font>"
UserID = Request("UserID")
PWD = Request("PWD")
Admingroup = Request("Admnigroup")


If UserID = "" Or PWD = "" Then
Head = ""
ElseIf not CheckPwd( UserID, PWD ) Then
Head = "<font size='2' face='Arial'>信息有误!请重新输入</font>"
Elseif ad="0" then
Session("UserID") = Session("Userrs")(0)
response.redirect "admin.asp"
Elseif ad="1" then
Session("UserID") = Session("Userrs")(0)
response.redirect "localadmin.asp"
else

Session("UserID") = Session("Userrs")(0)
response.redirect "register.asp"
End If
%>
...全文
39 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Brookes 2003-08-18
  • 打赏
  • 举报
回复
1。你的登陆验证语句有重大漏洞!
sql = "Select * From tblUser Where UserID='" & UserID & "' And PWD = '" & PWD & "'"
设想,如果有人输入username name'or'1'='1,。。。。。?
改为:
sql = "Select password From tblUser Where UserID='" & UserID
然后验证密码是否一直就可以了

2.不要使用这样的验证方法,既然写了验证函数,为何只验证用户名和密码的正确性?
考虑这样:
如果通过,则返回Admingroup,如果不通过,则返回-1.
你只需要读取函数返回值就可以根据情况处理了!
skyweave 2003-08-18
  • 打赏
  • 举报
回复
看一看你的ad有没有在Function CheckPwd( UserID, PWD )之外定义
如果没有定义ad将是一个局部变量,离开Function CheckPwd之后,就变成了nothing。
下面引用ad就不对了。

个人感觉你的这些代码太乱,Function CheckPwd就应该只做Check Password的功能,不应该再增加返回AdminGroup的功能,你应该再写一个方法Function GetAdminGroup,这样代码的结构才能够清晰。
tigerwen01 2003-08-18
  • 打赏
  • 举报
回复
...
If UserID = "" Or PWD = "" Then
Head = ""
ElseIf not CheckPwd( UserID, PWD ) Then
Head = "<font size='2' face='Arial'>信息有误!请重新输入</font>"
Elseif ad("Admingroup")="0" then
Session("UserID") = Session("Userrs")(0)
response.redirect "admin.asp"
Elseif ad("Admingroup")="1" then
Session("UserID") = Session("Userrs")(0)
response.redirect "localadmin.asp"
else

Session("UserID") = Session("Userrs")(0)
response.redirect "register.asp"
End If
Re: 《用户管理及用户信息查询命令》 ---------------------------------------内容提要: 01/19)命令useradd   :创建用户02/19)命令usermod :修改用户信息03/19)命令userdel    :删除用户04/19)命令groupadd:创建新组05/19)命令groupdel :删除用户组06/19)命令passwd    :修改用户密码07/19)命令chage      :修改用户密码有效期08/19)命令chpasswd:批量更新用户密码09/19)命令su            :切换用户10/19)命令visudo     :编辑sudoers文件11/19)命令sudo        :以另一个用户身份执行命令12/19)命令id             :显示用户与用户组的信息13/19)命令w             :显示已登录用户信息14/19)命令who          : 显示已登录用户信息15/19)命令users       :显示已登录用户16/19)命令whoami    : 显示当前登录的用户名17/19)命令last          :显示用户登录列表18/19)命令lastb         : 显示用户登录失败的记录19/19)命令lastlog      : 显示所有用户的最近登录记录  本人在教学和实战过程中发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作中,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手中的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手中的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功! 本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题中来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学中就不再赘述! 《参透 VMware 桌面级虚拟化》 《在虚拟机中安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》 

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧