| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 233 人关注过本帖
标题:【求助】会员登陆问题
收藏  订阅  推荐  打印
zhuzhanjun
Rank: 2
等级:注册会员
帖子:129
积分:1604
注册:2008-5-3
【求助】会员登陆问题

<%
      dim sql,rs,username,userpwd
    username=request.Form("caccount")
    userpwd=request.Form("cpassword")
    
      sql="select * from T_User where username='" & username    & "'"
      set rs=server.CreateObject("adodb.recordset")
    rs.Open sql,conn,1,3    
    
    do while not rs.eof     
        if rs("username")=username then
            response.Redirect("index.asp")
        else
            response.Write("错误")
        end if
    loop
%>

这样写对吗?
我要完成的功能是:有一个表。表里面有十个用户,我随便用一个用户登陆。如果存在则显示成功。否则失败。
怎么做呢。
搜索更多相关主题的帖子: 会员  登陆  
2008-5-18 14:17
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4479
积分:45682
注册:2007-2-9

这样写有点小问题,不很错。而且注意有注入漏洞。

没有核对密码。

注意你的sql语句生成方式,在表里查询所有名称为什么什么什么的记录,按说要么没有,要么有一条,那么下面就不应该用do循环了,何况那个if肯定是真的(因为你搜记录的条件是他们相等),而是直接判断Rs.BOF or Rs.EOF,如果是真,那么用户不存在,如果是假,继续核对密码,Rs("password")=userpwd,如果相等,那么放行,如果不等,就是密码错误。

我简单改一下,我没有考虑注入漏洞,假定表里密码明文字段为password
<%
    dim sql,rs,username,userpwd
    username=request.Form("caccount")
    userpwd=request.Form("cpassword")
   
      sql="select * from T_User where username='" & username  & "' And password='" & userpwd & "'"
      set rs=server.CreateObject("adodb.recordset")
    rs.Open sql,conn,1,3   
      
    If Rs.BOF or Rs.EOF Then
        Response.Write "登录失败"    '可能是用户名错误,也可能是密码错误,总之是没有满足用户名和密码都符合的记录
        Response.End
    End If
   
    Response.Redirect "index.asp?info=登录成功"
%>

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-5-18 14:35
zhuzhanjun
Rank: 2
等级:注册会员
帖子:129
积分:1604
注册:2008-5-3

谢谢版主啊。
那应该怎么做才不会有漏洞呢
2008-5-18 14:42
zhuzhanjun
Rank: 2
等级:注册会员
帖子:129
积分:1604
注册:2008-5-3

我试下改了以下代码,又出现一个错误啊。
    If Rs.BOF or Rs.EOF Then
        if rs("username")=username then ------此处为17行
            if rs("userpwd")=userpwd then
                Response.Redirect "index.asp"    
            else
                Response.Write "登录失败,密码错误"   
                Response.End
            end if
        else
            Response.Write "登录失败,用户名不存在或者错误"   
            Response.End
        end if
    End If

错误类型:
(0x80020009)
发生意外。
/TestDemo/UserLogin.asp, 第 17 行
2008-5-18 15:00
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.048324 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved