验证信息不管用,好像和存入的数据没关系
数据库都建好了,也连上了,但是在验证时无论输什么都可以进入main.asp页面
<% if isempty(session("passed")) then
session("passed")=false
end if
if session("passed")=false then
UserName=request.form("UserName")
UserPwd=request.form("UaerPwd")
if UserName="" then
Errmsg="请输入用户名和密码"
else
Dim conn
set conn=server.CreateObject("adodb.connection")
conn.open "dsn=Discuss;uid=sa;pwd=sa"
strSql="select * from Users"
Dim rs
set rs=conn.execute(strSql)
if rs.eof then
session("Errmsg")="用户不存在"
else
if UserPwd<>rs.fields("UserPwd") then
session("Errmsg")="密码不正确"
else
Errmsg=""
session("Passed")=True
session("UserName")=rs.fields("UserName")
session("Errmsg")=""
end if
end if
end if
end if
if not session("passed") then
%>
<html>
<body>
<script language="javascript">
function chkfield1(){
if (document.denglu.UserName.value==''){
window.alert("请输入用户名!")
return false
}
else
if(document.denglu.UserPwd.value==''){
window.alert("请输入密码!")
return false
}
return true
}
</script>
<br><br>
<p align="center"><font color="#990033" size="15" face="隶书">身份验证</font></p>
<hr color="#993300" width="50%" />
<form method="post" action="main.asp"name="denglu" onsubmit="return chkfield1()">
<br>
<p align="center">用户名: <input type="text" name="UserName" size="20"></p>
<p align="center">密 码: <input type="password" name="UserPwd" size="20"></p>
<center><input type="submit" value="确定" name="B1">
<input type="reset" value="重写" name="B2"></center></form>
<form method="post" action="zhuce.asp"name="zhuce"><center>
<input type="submit" value="注册新用户" name="B3"></center>
</form>
</body>
</html>
<%
response.End
end if
%>
[解决办法]
我觉得你应注意两个地方:
1、程序逻辑:既然是登录页,说明该用户没有登录,你无须搞那么多无谓的判断if isempty(session("passed")) then
session("passed")=false
end if
直接显示登录页面就可以了:
<html>
<body>
<script language="javascript">
function chkfield1(){
if (document.denglu.UserName.value==''){
window.alert("请输入用户名!")
return false
}
else
if(document.denglu.UserPwd.value==''){
window.alert("请输入密码!")
return false
}
return true
}
</script>
<br><br>
<p align="center"><font color="#990033" size="15" face="隶书">身份验证</font></p>
<hr color="#993300" width="50%" />
<form method="post" action="main.asp?action='login'"name="denglu" onsubmit="return chkfield1()">
<br>
<p align="center">用户名: <input type="text" name="UserName" size="20"></p>
<p align="center">密 码: <input type="password" name="UserPwd" size="20"></p>
<center><input type="submit" value="确定" name="B1">
<input type="reset" value="重写" name="B2"></center></form>
<form method="post" action="zhuce.asp"name="zhuce"><center>
<input type="submit" value="注册新用户" name="B3"></center>
</form>
</body>
</html>
2、用户存在与否判断是不是有问题?
strSql="select * from Users"
Dim rs
set rs=conn.execute(strSql)
if rs.eof then
session("Errmsg")="用户不存在"
else
上面的红字怎么判断出"用户不存在"呢?
[解决办法]
<%
flag=Request.QueryString("flag")
if Len(flag)>0 then'如果是提交验证信息,才进行后台处理
UserName=request.form("UserName")
UserPwd=request.form("UaerPwd")
if Len(UserName)>0 and Len(UserPwd)>0 then '如果用户名和密码都填写了,开始后台验证
Dim conn,rs
set conn=server.CreateObject("adodb.connection")
conn.open "dsn=Discuss;uid=sa;pwd=sa"
strSql="SELECT * FROM Users WHERE UserName='"&UserName&"' AND 你的密码字段名='"&UserPwd&"'"
set rs=conn.execute(strSql)
if Not rs.eof Then'验证无误后,将用户ID写入session,然后转向主页面
session("uID")=rs("你的用户ID字段名")
'''''''''session("Passed")=True你只要检查session("uID")是否为空就知道用户是否是登陆状态了
conn.close: Set conn=Nothing
response.redirect("main.asp")
response.end
Else
Errmsg="用户名或密码错误!"
End if
Else
Errmsg="请输入用户名和密码!"
End if
end if
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>登录示例</title>
<script type="text/javascript">
Function $(id){return document.getElementById(id);}
function chkfield1(){
if ($("UserName").value==""){ alert("请输入用户名!"); $("UserName").focus(); return false; }
if($("UserPwd").value==""){ alert("请输入密码!"); $("UserPwd").focus(); return false; }
}
</script>
<style type="text/css">
*{font-family:verdana;font-size:12px;}
td{height:20px;}
</style>
</head>
<body>
<br><br>
<p align="center"><font color="#990033" size="15" face="隶书">身份验证</font></p>
<hr color="#993300" width="50%" />
<%=Errmsg%>
<form method="post" action="?flag=1" name="frm" onsubmit="return chkfield1()">
<br>
<p align="center">用户名: <input type="text" name="UserName" size="20"></p>
<p align="center">密 码: <input type="password" name="UserPwd" size="20"></p>
<center><input type="submit" value="确定" name="B1">
<input type="reset" value="重写" name="B2"></center></form>
<form method="post" action="zhuce.asp"name="zhuce"><center>
<input type="submit" value="注册新用户" name="B3"></center>
</form>
</body>
</html>