登录页面出错

xiaotie0708 2005-04-15 09:32:37
(1)这是登录页面denglu.asp主要相关代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="conn/conn.asp"-->
<!--#include file="conn/jvfunction.asp"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>登录页面</title>
<link href="css/css6.css" rel="stylesheet" type="text/css">
</head>

<body>
<form name="form1" method="post" action="dengluasp.asp" onSubmit="submitcheck()">
<table width="244" border="1" align="center">
<tr>
<td colspan="2">请您登录</td>
</tr>
<tr>
<td width="74"><div align="center">用户名</div></td>
<td width="154"><input name="name" type="text" size="20"></td>
</tr>
<tr>
<td><div align="center">密码</div></td>
<td><input name="pass" type="text" size="20"></td>
</tr>
(2)这是登录页面处理代码dengluasp.asp
<!--#include file="conn/conn.asp"-->
<%
dim rse,sqluser
set rse =server.CreateObject("adodb.recordset")
sqluser="select * from userinfo"
rse.open sqluser,conn,1,3
if rse("username")<>request("name") then
response.Write("用户名错误!")
else
if rse("password")<>request("pass") then
response.Write("密码错误!")
else
response.Write("登录成功!")
end if
end if
set rse=nothing
conn.close
set conn=nothing
%>

(3)当登录的时候总是显示“用户名错误!”
这是我的分析:应该是这句错误rse("username")<>request("name")
但是数据库中userinfo表的username字段与姓名输入文本框NAME属性名称name不一致,
但是,仔细检查后是一致的。
请指教,谢谢!
...全文
147 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiqunet 2005-04-15
  • 打赏
  • 举报
回复

/////rse("password")<>request("pass")

象这样的网站,如何叫人去注册使用?就算别人不来破解,站长response.write(rse("password"))就可以把我的密码明文输出了

而我的用户名、密码在很多地方是相同的~!·~~!~!网站太多,个个都叫我注册,我记不了那么多。

这种连最基本的加密也没有的数据处理方法本来就是对用户的不尊重和不负责任。还谈什么保密?

wandering_hawk 2005-04-15
  • 打赏
  • 举报
回复
qiqunet(瑞旗·广东)

我明白你的意思,我只是想告诉他实际使用的时候不应该提示到底是哪个错了,当然不排除特殊情况。

xiaotie0708 (肖铁)
你最好把整个页面代码发上来,不要分开发,我怀疑是你代码的逻辑结构有问题
还有,你说提示错误,是指打开页面就提示还是点了确定才提示?
xiaotie0708 2005-04-15
  • 打赏
  • 举报
回复
///request("name")应该是request.form("name")吧?


说得对,我没留意到这一点

对于这个,我也尝试过了,一样的错误。
qiqunet 2005-04-15
  • 打赏
  • 举报
回复

//////////////////////////////////////////
晕.难道用户名和密码错误.要输出出来吗.直接查找这个用户.然后比较用户名和密码.对.则进入会员页面.错误的话.直接输出错误不就行了.干吗要输出详细内容
晕.升四个角了.要散分了.^_^

/////////////////////////////////////

程序设计的东西很难说,有的人可能会有特殊要求,我们做设计的就应该尊重客户意见

我准备接分^_^
xiaotie0708 2005-04-15
  • 打赏
  • 举报
回复
很感谢大家能这样深入讨论。刚才我都试过你们的说法了。
还有,我之所以这么简单化代码也是测试一下,但是总是出错。。。。。。
尝试了大家的说法,还是有错误啊。
mayi545 2005-04-15
  • 打赏
  • 举报
回复
request("name")应该是request.form("name")吧?
^_^.我还没注意
mayi545 2005-04-15
  • 打赏
  • 举报
回复
晕.难道用户名和密码错误.要输出出来吗.直接查找这个用户.然后比较用户名和密码.对.则进入会员页面.错误的话.直接输出错误不就行了.干吗要输出详细内容
晕.升四个角了.要散分了.^_^
qiqunet 2005-04-15
  • 打赏
  • 举报
回复


///request("name")应该是request.form("name")吧?


说得对,我没留意到这一点
qiqunet 2005-04-15
  • 打赏
  • 举报
回复


他要告诉用户:是用户名不对呢?还是密码不对

如果你用精确查找,只要用户输入的数据中有一个是错的,返回的记录集就是空的,不能指示是因什么错而造成登陆不成功。
wandering_hawk 2005-04-15
  • 打赏
  • 举报
回复
request("name")应该是request.form("name")吧?

另外,你这段代码漏洞太多
1.如果过userinfo中有多个用户的记录,那么你res("username")只是第一条记录的
如果你输入的是第二个用户,当然是不行的
2.sql语句不太合适,你应该写"select * form userinfo where username='" &request.form("name") "' and password='" & request.form("pass"),如果返回的记录rs是空的话,就说明输入的不对
3.不能将用户名和密码的错误分开提示,这样就等于告诉别人你这个用户名是对的,密码是错的,然后别人就可以专心猜测密码了,然后......
4.form 里面的onsubmit=这里有问题,想必你的意思是,在客户端验证输入的有效性,比如不能为空,但是你这样写仍然会想server提交数据,onsubmit=的意思是在submit的时候做什么事情,而不是是否提交
qiqunet 2005-04-15
  • 打赏
  • 举报
回复
没什么,下面是楼主的贴子,就因为这个贴子,所以需要循环


if rse("username")<>request("name") then
response.Write("用户名错误!")
else
if rse("password")<>request("pass") then
response.Write("密码错误!")
else
response.Write("登录成功!")
end if
end if
mayi545 2005-04-15
  • 打赏
  • 举报
回复
我这个是可以的.问楼上.为什么要循环???
<!--#include file="conn/conn.asp"-->
<%
dim rse,sqluser
set rse=conn.execute("select * from userinfo where username='" & request("name") & "'")
if rse.eof then
resonse.write "error"
response.end
end if


if rse("username")=request("name") and rse("password")=request("pass") then
response.Write("登录成功!")
else
response.write "错误"
response.end
end if
set rse=nothing
conn.close
set conn=nothing
%>
qiqunet 2005-04-15
  • 打赏
  • 举报
回复
sqluser="select * from userinfo where username='" & request("name") & "'"

err.number=0
rse.open sqluser,conn,1,3

passright=false
if err.number<>0 then
response.Write("读取数据库出错!")
else
if rse.eof and rse.bof then
response.Write("用户名错误!")
else
rse.movefirst
do while not rse.eof
if rse("password")=request("pass") then '●上一贴这里忘了改了●
passright=true
exit do
end if
rse.movenext
loop
end if
rse.close
rse=nothing
end if

if passright=false then
response.Write("密码错误!")
else
response.Write("登录成功!")
end if
qiqunet 2005-04-15
  • 打赏
  • 举报
回复
sqluser="select * from userinfo where username='" & request("name") & "'"

err.number=0
rse.open sqluser,conn,1,3

passright=false
if err.number<>0 then
response.Write("读取数据库出错!")
else
if rse.eof and rse.bof then
response.Write("用户名错误!")
else
rse.movefirst
do while not rse.eof
if rse("password")<>request("pass") then
passright=true
exit do
end if
rse.movenext
loop
end if
rse.close
rse=nothing
end if

if passright=false then
response.Write("密码错误!")
else
response.Write("登录成功!")
end if
xiaotie0708 2005-04-15
  • 打赏
  • 举报
回复
按mayi545朋友的说法尝试了,怎么输入都是
显示“错误”这两个字。
xiaotie0708 2005-04-15
  • 打赏
  • 举报
回复
谢谢您,我试一试。
qiqunet 2005-04-15
  • 打赏
  • 举报
回复



你没有遍历所有记录!!!!!!!!!!!11
mayi545 2005-04-15
  • 打赏
  • 举报
回复
晕.写错了.
if rse("username")=request("name") and rse("password")<>request("pass") then
应该写成
if rse("username")=request("name") and rse("password")=request("pass") then
mayi545 2005-04-15
  • 打赏
  • 举报
回复
没有指定查找用户.如果里面有多个用户,会出现错误

<!--#include file="conn/conn.asp"-->
<%
dim rse,sqluser
set rse=conn.execute("select * from userinfo where username='" & request("name") & "'")
if rse.eof then
resonse.write "error"
response.end
end if


if rse("username")=request("name") and rse("password")<>request("pass") then
response.Write("登录成功!")
else
response.write "错误"
response.end
end if
set rse=nothing
conn.close
set conn=nothing
%>

28,391

社区成员

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

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