CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

小女子请高手帮忙(我已经弄了两天了)

楼主lianyi_1999()2004-08-03 09:59:19 在 Web 开发 / ASP 提问

想做一个网站后台管理系统,在用户登陆时的代码如下:  
   
  <%@LANGUAGE="VBSCRIPT"   CODEPAGE="936"%>  
  <html>  
  <head>  
  <meta   name   =   "Author"   content="   Zyl">  
  <meta   name   =   "Contact"   content="lianyi_1999@sohu.com">  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <title>网站后台管理系统V1.0</title>  
  </head>  
  <body>  
  <form   action="Login_submit.asp"   method="post">  
  <center>  
      <table   width="770"   border="0"   cellspacing="1"   cellpadding="2">  
          <tr>    
              <td     colspan   =   "2"   height="27"   bgcolor   =   "#E3E3E3"><div   align="center"><strong>管理员登陆</strong></div></td>  
           
          </tr>  
          <tr>  
              <td   width="355"   height="27">    
                  <div   align="right"><font   size="2">用户名</font>:</div></td>  
              <td   width="415"><input   name="username"   type="text"   value=""   size="20"   maxlength="20"></td>  
          </tr>  
          <tr>    
              <td   height="27">  
  <div   align="right"><font   size="2">密&nbsp;&nbsp;码</font>:</div></td>  
              <td><input   name="password"   type="password"   id="password"   size="20"   maxlength="20"></td>  
          </tr>  
          <tr>    
              <td   colspan   =   "2"   height="27"   align   =   "center">    
                  <input   name="sumbit"   type="submit"   value="登录">  
                  &nbsp;   &nbsp;   <input   name="cancle"   type="reset"   value="取消"></td>  
          </tr>  
  <td   colspan   =   "2"   height   =   "20"   bgcolor   =   "#E3E3E3"></td>  
      </table>  
  <center>  
  </form>  
  </body>  
  </html>  
   
  其中Login_submit.asp为  
  <%@LANGUAGE="VBSCRIPT"   CODEPAGE="936"%>  
  <!--#include   file="conn.asp"-->     //   是打开数据库  
  <%  
  username   =   request.Form("username")  
  password   =   request.Form("password")  
  Set   rs   =   Server.CreateObject("ADODB.RecordSet")  
  sql   =   "select   *   from   Manage_User   where   UserName='"   &   username   &   "'   And   PassWord='"&   password   &"'"  
  Set   rs   =   conn.Execute(sql)  
  If     rs.recordcount=0   Then  
   
  Session("username")=rs("UserName")  
  Session("password")=rs("PassWord")  
  response.Redirect("main.asp")  
                    conn.Close  
                    Set   conn   =   Nothing  
  else    
  response.Redirect("Login.asp")  
  end   if  
  %>  
   
  可是不知道为什么login_submit.asp中的if语句是If     rs.recordcount=0   还是If     rs.recordcount<>0   都执行then中的内容,  
                    Session("username")=rs("UserName")  
  Session("password")=rs("PassWord")  
  response.Redirect("main.asp")  
                    conn.Close  
                    Set   conn   =   Nothing  
   
  各位大虾帮忙呀,我是新手,都苦恼好几天了,谢谢了  
   
   
  问题点数:0、回复次数:20Top

1 楼ganq(小case,再烂的我都玩过~)回复于 2004-08-03 10:12:43 得分 0

if   rs.eof   and   rs.bof   then  
  ...  
  else  
  ...  
  end   ifTop

2 楼wsdzm(明)回复于 2004-08-03 10:15:50 得分 0

rs.open   sql,conn,1,1  
  If     rs.recordcount=0   Then  
   
   
  response.Redirect("Login.asp")  
   
  else  
   
  Session("username")=rs("UserName")  
  Session("password")=rs("PassWord")  
  response.Redirect("main.asp")  
                    conn.Close  
                    Set   conn   =   Nothing  
   
   
  end   if  
  Top

3 楼wsdzm(明)回复于 2004-08-03 10:16:19 得分 0

Set   rs   =   conn.Execute(sql)--->rs.open   sql,conn,1,1Top

4 楼look4sword(觅剑 | 劈柴、喂马、周游世界。)回复于 2004-08-03 10:21:37 得分 0

if   rs.eof   and   rs.bof   then  
  ...  
  else  
  ...  
  end   if  
  同意这个.  
  而且,楼主的程序很容易SQL注入,要改一下哦.Top

5 楼talkno(风情)回复于 2004-08-03 10:26:08 得分 0

sql   =   "select   *   from   Manage_User   where   UserName='"   &   username   &   "'  
  set   rs=server.createobject("adodb.recordset")  
  rs.open   sql,objcn  
    if   rs.eof   then  
    response.Write"用户帐号错误或用户帐号未激活!请重新输入!"  
  response.Write("<a   href=Javascript:history.go(-1)>返回</a>")  
  response.end  
  rs.close  
  set   rs=nothing  
  else  
  sql   =   "select   *   from   Manage_User   where   UserName='"   &   username   &   "'   And   PassWord='"&   password   &"'"  
  set   rst1=server.CreateObject("adodb.recordset")  
  rst1.open   sql1,objcn,1,3  
  if   rst1.eof   then  
  response.Write"密码错误!请重新输入!"  
  response.Write("<a   href=Javascript:history.go(-1)>返回</a>")  
  rst1.close  
  set   rst1=nothing  
  objcn.close  
  set   objcn=nothing  
  response.End  
  end   if    
  end   ifTop

6 楼lianyi_1999()回复于 2004-08-03 10:26:12 得分 0

我是新手,什么都不懂,能否告诉我什么叫“SQL注入”,谢谢Top

7 楼jervis82(我是海绵.吸.吸.吸...)回复于 2004-08-03 10:27:14 得分 0

实践才是最重要。试一试不就知道了,不用问吧。Top

8 楼Gorgee(凭阑悄悄)回复于 2004-08-03 10:28:17 得分 0

sql   =   "select   PassWord   from   Manage_User   where   UserName='"   &   username   &   "'"  
  Set   rs   =   conn.Execute(sql)  
  If   not   rs.eof   Then  
          if   trim(rs.fields("PassWord"))=trim(password)   then  
  Session("username")=rs("UserName")  
  Session("password")=rs("PassWord")  
  response.Redirect("main.asp")  
          else  
  response.Redirect("Login.asp")   'error   pwd  
          end   if  
  else    
  response.Redirect("Login.asp")   'error   userId  
  end   if  
   
  conn.Close  
  Set   conn   =   NothingTop

9 楼19az(相信我,没错的!)回复于 2004-08-03 10:31:07 得分 0

同意楼上的,如果你要用rs.recordcount来判断的话,你应该每次输出它的值,看看到底是什么原因?  
  因为你用的是conn.Execute(sql),这样用的rs不支持recordcount属性,故rs.recordcount的值一直为   -1,应该换个方式执行,如   rs.open   sql,conn,1,1   等等  
   
  Top

10 楼lianyi_1999()回复于 2004-08-03 10:33:32 得分 0

上面所有的代码我都试过了,还是不行,总是执行if语句中then的内容,不管if是否成立,真的是求求各位大哥,大姐了Top

11 楼lianyi_1999()回复于 2004-08-03 10:35:09 得分 0

如果你要用rs.recordcount来判断的话,你应该每次输出它的值,看看到底是什么原因?  
  怎样查看记录中的值?Top

12 楼54netkey()回复于 2004-08-03 10:41:03 得分 0

rs.recordcount>0呢?Top

13 楼sheng9hhd(无形)回复于 2004-08-03 10:44:14 得分 0

rs.recordcount是不是等于-1呀Top

14 楼sheng9hhd(无形)回复于 2004-08-03 10:47:17 得分 0

看看sql有没有问题  
  sql   =   "select   *   from   Manage_User   where   UserName='"   &   username   &   "'   And   PassWord='"&   password   &"'"  
  response.write   sql  
  response.endTop

15 楼runmin()回复于 2004-08-03 10:51:26 得分 0

rs的打开方式取得不到recordcount导致的  
   
  使用rs.open打开Top

16 楼morris_lz(岁数大了,哎~~~~~)回复于 2004-08-03 10:53:29 得分 0

条件就用If   not   rs.eof   Then判断,看看返回的记录集是否为空,不为空就说明有这个用户,注册新用户入库就可以了Top

17 楼cyl180555(帅龙小云)回复于 2004-08-03 10:54:06 得分 0

同意   Gorgee(凭阑悄悄)     的程序,我一直也是这样写的,楼主的写法有可能被别人用   '   "   设计出万能ID和密码,   比如ID   输入   111'or'1=1   密码随便输入   则最后执行的sql语句就成了:  
  sql   =   "select   *   from   Manage_User   where   UserName='111'or'1=1'     And   PassWord='xxx'"  
    这就一定能通过验证了原理可查看:http://www.pconline.com.cn/pcedu/empolder/db/sql/0404/346024.htmlTop

18 楼nighting1029(一个人的日子)回复于 2004-08-03 10:54:13 得分 0

呵呵!我做的网站,以现在大家的技术来说,都可以进行sql注入,以前我不懂过滤,现在觉得要看什么样的网站,比如网吧内部的电影播放系统,我都不会过滤,呵呵!至于在外部服务器的web页,我都要过滤很多东西……Top

19 楼Iamnomad(浪子)回复于 2004-08-03 11:06:53 得分 0

If     rs.recordcount=0   Then  
  Session("username")=rs("UserName")  
  Session("password")=rs("PassWord")  
  response.Redirect("main.asp")  
                    conn.Close  
                    Set   conn   =   Nothing  
  else    
  response.Redirect("Login.asp")  
  end   if  
   
  ==>  
   
  If     not   rs.eof   Then  
   
  Session("username")=rs("UserName")  
  Session("password")=rs("PassWord")  
  response.Redirect("main.asp")  
  else    
  response.Redirect("Login.asp")  
  end   if  
  conn.Close  
  Set   conn   =   Nothing  
   
  不要用recordcount,好象它和打开方式有关,不记得了,在学JSP  
   
   
   
   
  Top

20 楼aiguo25(青春无悔)回复于 2004-08-04 20:01:36 得分 0

rs.recordcount   的值不稳定,应该用rs.eofTop

相关问题

  • 一个简单的session 弄了几天也没有弄明白是那儿的问题,请各位帮小女子看看呀!
  • 小女子菜,请各位高手帮一下小女子我!!!!
  • 急!小女子请教大家了!
  • 小女子有个问题请教?
  • 小女子请教各位高手
  • 各位大虾请帮下小女子,小女子感激不尽,尽量比分!
  • 哪位路过的大侠,请拔刀相助,快救小女子一命,小女子感恩不尽!!
  • 小女子向您请教:这几行代码哪里有错???
  • 请各位帮小女子看一下这段代码
  • 小女子有麻烦事请高手帮忙啊!!!!!!!!!!!!!!

关键词

得分解答快速导航

  • 帖主:lianyi_1999

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo