ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 907|回复: 5

用户登录问题 [复制链接]

注册会员

初级会员

精华贴数
0
技术积分
80
社区积分
0
注册时间
2004-12-23
论坛徽章:
0
发表于 2004-12-30 18:02:41 |显示全部楼层
我在做一个ASP论坛  ,没法解决用户登录问题请高手帮帮忙~~~
数据库名为bbs,包括bbs和users两个表,其中users用于存登录用户信息的.
我已建立一个文件内容如下:
<%
'连接BBS数据库
Dim db,connstr
connstr="Dbq="&Server.Mappath("bbs.mdb"&";Driver={Microsoft Access Driver (*.mdb)}"
Set db=Server.CreateObject("ADODB.Connection"
db.Open connstr
%>
在论坛首页有登录功能,提交给dl.asp文件处理,如果所填用户名(usertxt)与users表中存在相等的myname字段值,(密码字段类似),那么就重定向到userindex.asp页面. 其中dl.asp中的asp代码如下(可是老出错):
<%
   dim  usertxt,passwordtxt,rs,sql
   usertxt=request.form("usertxt"
   passwordtxt=request.form("passwordtxt"
   sql="select myname,password from users where myname=usertxt and password=passwordtxt"
   set rs=db.execute(sql)
   if not rs.bof and not rs.eof then
        response.redirect"userindex.asp"
   else
       response.redirect "请输入正确的用户名和密码!"
%>
请问哪个地方错了,(我已经把数据库连接文件包含进dl.asp文件了)14[/SIZE] blue[/COLOR]

版主

不如做了和尚

精华贴数
1
技术积分
9716
社区积分
10634
注册时间
2001-9-24
论坛徽章:
98
管理团队2006纪念徽章
日期:2006-04-16 22:44:452012新春纪念徽章
日期:2012-01-04 11:49:54蜘蛛蛋
日期:2011-11-06 20:42:37ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41咸鸭蛋
日期:2011-06-20 08:57:182011新春纪念徽章
日期:2011-05-03 08:46:572011新春纪念徽章
日期:2011-03-17 14:37:002011新春纪念徽章
日期:2011-02-18 11:42:472011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
发表于 2004-12-30 22:06:25 |显示全部楼层
sql="select myname,password from users where myname=usertxt and password=passwordtxt"
这句有问题,应该是这样的:

sql="select myname,password from users where myname='"&usertxt&&"' and password='&passwordtxt"&"'"
不推荐这种方法验证,存在很大sql注入风险!

使用道具 举报

注册会员

初级会员

精华贴数
0
技术积分
80
社区积分
0
注册时间
2004-12-23
论坛徽章:
0
发表于 2004-12-31 03:05:11 |显示全部楼层

语法没错了可是没有达到验证的效果

我照你说的把程序部分改为:
sql="select myname,password from users where myname='"& usertxt &"'and password='"&passwordtxt &"'"
set rs=server.createobject("adodb.recordset"
rs.open sql,d,1
但是如果条件语句里的执行语句不改变位置的话就老是弹出"请输入正确的用户名和密码!"
而如下调整后就顺利登录.而且未注册的用户名也可以登录这说明没有起到验证效果.(我调整顺序也只是为了测试非条件语句有没语法错误)
if not rs.bof and not rs.eof then
       response.write "请输入正确的用户名和密码!"
else
     response.redirect"userindex.asp"
end if
这又得如何办好呢?

使用道具 举报

版主

不如做了和尚

精华贴数
1
技术积分
9716
社区积分
10634
注册时间
2001-9-24
论坛徽章:
98
管理团队2006纪念徽章
日期:2006-04-16 22:44:452012新春纪念徽章
日期:2012-01-04 11:49:54蜘蛛蛋
日期:2011-11-06 20:42:37ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41咸鸭蛋
日期:2011-06-20 08:57:182011新春纪念徽章
日期:2011-05-03 08:46:572011新春纪念徽章
日期:2011-03-17 14:37:002011新春纪念徽章
日期:2011-02-18 11:42:472011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
发表于 2004-12-31 09:25:11 |显示全部楼层
这个if not rs.bof and not rs.eof 判断条件据说是不准确的!

查询返回了信息,不能根据not rs.bof and not rs.eof 来判断,具体是什么道理,我不知道,
但记得好像有这一说。总之不要作这样的登录判断。

使用道具 举报

注册会员

初级会员

精华贴数
0
技术积分
80
社区积分
0
注册时间
2004-12-23
论坛徽章:
0
发表于 2004-12-31 21:34:10 |显示全部楼层

那你有什么建议吗?

有没有其它断定方法?

使用道具 举报

版主

不如做了和尚

精华贴数
1
技术积分
9716
社区积分
10634
注册时间
2001-9-24
论坛徽章:
98
管理团队2006纪念徽章
日期:2006-04-16 22:44:452012新春纪念徽章
日期:2012-01-04 11:49:54蜘蛛蛋
日期:2011-11-06 20:42:37ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41咸鸭蛋
日期:2011-06-20 08:57:182011新春纪念徽章
日期:2011-05-03 08:46:572011新春纪念徽章
日期:2011-03-17 14:37:002011新春纪念徽章
日期:2011-02-18 11:42:472011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
发表于 2004-12-31 23:30:53 |显示全部楼层
防止简单的注入可以这样
usertxt一定要先判断过滤一下,不准有空格,单引号,等号等特殊字符!然后再这样
sql="select myname,password from users where myname='"& usertxt &""'
set rs=server.createobject("adodb.recordset"
if RS("password" = passwordtxt
response.redirect"userindex.asp"
else
response.redirect "请输入正确的用户名和密码!"

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部