读书人

证验信息不管用好像和存入的数据没关

发布时间: 2012-12-30 10:43:15 作者: rapoo

验证信息不管用,好像和存入的数据没关系
数据库都建好了,也连上了,但是在验证时无论输什么都可以进入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>


[解决办法]
没事写了一个简单的用户登录代码,也贴出来吧
<!--#include file="inc/cn.asp" -->
<!--#include file="inc/function.asp" -->
<%
myname =Html_encode(Request.Form("myname"))
mypass =Html_encode(Request.Form("mypass"))

If myname="" or mypass="" Then
Response.Write("<script>alert('用户名密码不能为空!');history.back();</script>")
Elseif len(myanme)>15 or len(mypass)>15 Then
Response.Write("<script>alert('用户名密码长度1-15 位');history.back();</script>")
Else
Sql="select * from stu_user where user_id='"&myname&"' and user_pwd='"&mypass&"'"
Call Db_connect()
Set Rs=Conn.execute(Sql)
If Not Rs.eof Then
Session("Uid")=Rs("user_id")
Session("Udj")=Rs("user_dj")
Session("Stuname")=Rs("User_name")
Response.Redirect("iframe.asp")

Else
Response.Write("<script>alert('用户名密码不正确!');history.back();</script>")
End if
End If

%>

读书人网 >ASP

热点推荐