首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

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

2012-12-30 
验证信息不管用,好像和存入的数据没关系数据库都建好了,也连上了,但是在验证时无论输什么都可以进入main.a

验证信息不管用,好像和存入的数据没关系
数据库都建好了,也连上了,但是在验证时无论输什么都可以进入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">用户名:&nbsp;<input type="text" name="UserName" size="20"></p>

<p align="center">密&nbsp;码:&nbsp;<input type="password" name="UserPwd" size="20"></p>
<center><input type="submit" value="确定" name="B1">&nbsp;&nbsp;
<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">用户名:&nbsp;<input type="text" name="UserName" size="20"></p>

<p align="center">密&nbsp;码:&nbsp;<input type="password" name="UserPwd" size="20"></p>


<center><input type="submit" value="确定" name="B1">&nbsp;&nbsp;
<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">用户名:&nbsp;<input type="text" name="UserName" size="20"></p>
<p align="center">密&nbsp;码:&nbsp;<input type="password" name="UserPwd" size="20"></p>
<center><input type="submit" value="确定" name="B1">&nbsp;&nbsp;
<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
 
%>

热点排行