| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:【求助】会员登陆问题
只看楼主 加入收藏
zhuzhanjun
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2008-5-3
结帖率:100%
收藏
 问题点数:0 回复次数: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-05-18 14:17
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
这样写有点小问题,不很错。而且注意有注入漏洞。

没有核对密码。

注意你的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=登录成功"
%>
2008-05-18 14:35
zhuzhanjun
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2008-5-3
收藏
得分:0 
谢谢版主啊。
那应该怎么做才不会有漏洞呢
2008-05-18 14:42
zhuzhanjun
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2008-5-3
收藏
得分:0 
我试下改了以下代码,又出现一个错误啊。
    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-05-18 15:00
快速回复:【求助】会员登陆问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022033 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved