登录验证一个奇怪的问题,RS("字段名")无法读取到数据,返回值为空,走过路过的都来看看啊

quickboy19821982 2008-04-14 09:10:58
先贴代码:
<%
dim username,password
username=trim(request.form("username"))
password=trim(request.form("pswd"))
if instr(username,"&")>0 or instr(username,"=")>0 then
response.write("<SCRIPT LANGUAGE=javascript>history.back(1);alert('用户名包含非法字符!');</SCRIPT>")
response.end
end if
if instr(password,"&")>0 or instr(password,"=")>0 then
response.write ("<SCRIPT LANGUAGE=javascript>history.back(1);alert('密码包含非法字符!');</SCRIPT>")
response.end
end if
if username="" or password="" then
response.write ("<SCRIPT LANGUAGE=javascript>history.back(1);alert('用户名和密码不能为空!');</SCRIPT>")
response.end
end if
%>
<!--#include file="include/conn.asp"-->
<%
dim sqlstr
sqlstr="select * from PSI_operator where username= '" & username & "'"
Set Rs=conn.Execute(sqlstr)
If (Rs.Eof) then
conn.close
response.write ("<SCRIPT LANGUAGE=javascript>alert('登录失败,该用户名不存在!');</SCRIPT>")
response.end
elseif password<>Rs("pswd") then
conn.close
response.write ("<SCRIPT LANGUAGE=javascript>alert('登录失败,密码不正确!');</SCRIPT>")
response.end
else
response.write ("<SCRIPT LANGUAGE=javascript>alert('登录成功!');</SCRIPT>")
response.end
conn.close
end if
%>

conn.asp内容:
<%
dim conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.open"Driver={SQL Server};Server=(Local);UID=sa;PWD=;database=PSI;"
%>

如果是数据库内不存在的用户,能提示该用户名不存在,可只要是数据库内存在的用户,总是提示密码错误,我alert了一下rs("pswd"),没有对话框弹出,说明返回的值为空,非常郁闷,请大家来看看
...全文
86 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
quickboy19821982 2008-04-14
  • 打赏
  • 举报
回复
我晕,终于发现哪里出错了
密码返回是返回了,但是,在111以后有个空格。。。把空格trim掉就好了
therachy 2008-04-14
  • 打赏
  • 举报
回复
elseif password <>Rs("pswd") then
response.Write (Rs("pswd"))
conn.close

response.write (" <SCRIPT LANGUAGE=javascript>alert('登录失败,密码不正确!'); </SCRIPT>")
response.end



这样写....试试看看吧.....
quickboy19821982 2008-04-14
  • 打赏
  • 举报
回复
让我晕的是,出错的行数提示的是response.Write (Rs("pswd"))这句,而不是elseif password<>Rs("pswd") then这句
代码如下:
elseif password<>Rs("pswd") then
conn.close
response.Write (Rs("pswd"))
response.write ("<SCRIPT LANGUAGE=javascript>alert('登录失败,密码不正确!');</SCRIPT>")
response.end
quickboy19821982 2008-04-14
  • 打赏
  • 举报
回复
终于得到了比较准确的错误信息了:
错误类型:
ADODB.Recordset (0x800A0CC1)
在对应所需名称或序数的集合中,未找到项目。

怎么回事啊
quickboy19821982 2008-04-14
  • 打赏
  • 举报
回复
那我把
response.write (" <SCRIPT LANGUAGE=javascript>alert('登录失败,密码不正确!'); </SCRIPT>")
修改成
response.write (" <SCRIPT LANGUAGE=javascript>alert('登录失败,密码不正确!'); alert(rs("pswd")); </SCRIPT>")

那么前一个对话框会出现,后一个则不会出现,怎么解释这个现象呢?返回值为NULL才会这样吧
oldjwu 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 quickboy19821982 的帖子:]
我alert了一下rs("pswd"),没有对话框弹出,说明返回的值为空[/Quote]

返回值为空也会弹出一个空对话框,因为相当于执行 alert("") ,除非这一句没有执行。

quickboy19821982 2008-04-14
  • 打赏
  • 举报
回复
添加response.write sqlstr后,输出显示正常的:
select * from PSI_operator where username= 'BSSA'
在查询分析器中也正常出现结果集:
username pswd name memo status
---------- ----- ---------- ----- ------
BSSA 111 系统管理员 NULL 0

(所影响的行数为 1 行)
No_Data_Found 2008-04-14
  • 打赏
  • 举报
回复
1 楼也是个办法 copy sql 到数据库执行下看看
No_Data_Found 2008-04-14
  • 打赏
  • 举报
回复
去掉
on error resume next 容错声明

确定连接 正确的数据库 打开 正确的表 查询正确的数据
windwl 2008-04-14
  • 打赏
  • 举报
回复
sqlstr="select * from PSI_operator where username= '" & username & "'"
下面加一句
response.write sqlstr

28,390

社区成员

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

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