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

大家帮帮我,快哭了,这两天没干别的,光整这登录了!!!!

楼主aboy85()2006-04-29 14:52:29 在 .NET技术 / ASP.NET 提问

我先加了几个控件    
  在Web   Form里:  
    加入两个Label控件,Text属性分别为“登录名”和“密码”;  
    加入两个TextBox控件,ID属性分别为“Userid”和“Pwd”,Text属性均为空;  
    加入两个RequiredFieldValidato控件,ID属性分别为“rfvUserid”和“rfvPwd”,Text属性分别为“请输入登录名!”和“请输入登录密码!”,ControlToValidate属性分别为"Userid"和"Pwd";  
    加入一个Button控件,ID属性为“LogButton”,Text属性别为“登录”;  
    最后加入一个Label控件,ID属性为“Msg”。  
  然后在LogButton_Click(object   sender,   System.EventArgs   e)事件加了如下代码:  
  *************************  
  string   userid,pwd;  
  userid=Userid.Text;  
  pwd=Pwd.Text;        
  string   mySel="SELECT   count(*)   as   iCount   from   User_tb   where   UserName='"+userid+"'";  
   
   
                          SqlConnection   myConn=new   SqlConnection("server=mood;uid=sa;pwd=00586;database=trans_database;");  
  SqlCommand   myCmd1=new   SqlCommand(mySel,myConn);  
  myCmd1.Connection.Open();  
  SqlDataReader   Dr1;  
  Dr1=myCmd1.ExecuteReader();  
  Dr1.Read();  
  string   Count=Dr1["iCount"].ToString();  
  Dr1.Close();  
  myCmd1.Connection.Close();  
  string   DrPwd;  
  if(Count!="0")  
  {  
  mySel="SELECT   *   from   User_tb   where   UserName='"+userid+"'";  
  SqlCommand   myCmd=new   SqlCommand(mySel,myConn);  
                                myCmd.Connection.Open();  
                                SqlDataReader   Dr;  
                                Dr=myCmd.ExecuteReader();  
                                Dr.Read();  
                                DrPwd=Dr["PassWord"].ToString();  
                                Dr.Close();  
                                if(DrPwd==pwd)  
        {  
        Session["logid"]=userid;  
                                   Response.Redirect("main.aspx");  
        Msg.Text="登录成功";  
        }  
        else  
        Msg.Text="登录密码错.";  
  }  
  else  
  Msg.Text="没有这个用户.";  
  ***************************************************  
  别处啥也没动,数据库中的用户表为User_tb,  
  字段如下:  
  UserId   int    
  UserName   varchar  
  PassWord   varchar  
  UserType   varchar  
  所以在代码中我只能用UserName='"+userid+"'"来匹配;  
  别的就没了  
  表中有一个用户为nokia   密码00586  
  然后报错为:  
  “/WebApplication1”应用程序中的服务器错误。  
  --------------------------------------------------------------------------------  
   
  无法找到资源。    
  说明:   HTTP   404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下   URL   并确保其拼写正确。    
   
  请求的   URL:   /WebApplication1/main.aspx  
   
   
  --------------------------------------------------------------------------------  
  版本信息:   Microsoft   .NET   Framework   版本:1.1.4322.573;   ASP.NET   版本:1.1.4322.573    
   
  请大家帮忙看看;我先谢谢了!!!  
  (不是不给分,是没分,我菜,请谅解)  
  问题点数:20、回复次数:49Top

1 楼zhongkeruanjian(编程亮子)回复于 2006-04-29 14:55:50 得分 0

main.aspx  
   
  这个页面到底有没有?Top

2 楼zhaoliang_chen(龙行天下)回复于 2006-04-29 14:56:40 得分 0

UserName='"+userid+"'"  
  改为:  
  UserName="+useridTop

3 楼clmilan(咔咔)回复于 2006-04-29 14:57:41 得分 0

"server=mood"把他改成"server=localhost",试试Top

4 楼llwen218(lanlan)回复于 2006-04-29 15:02:48 得分 0

main.aspx不存在Top

5 楼mezyy()回复于 2006-04-29 15:04:12 得分 0

工程文件->>属性->>Web共享->>共享文件夹试试Top

6 楼paoluo(一天到晚游泳的鱼)回复于 2006-04-29 15:04:25 得分 0

zhaoliang_chen(龙行天下)   (   )   信誉:100     2006-04-29   14:56:00     得分:   0      
     
     
        UserName='"+userid+"'"  
  改为:  
  UserName="+userid  
       
     
  ---------------------------------  
  越改越錯。  
   
   
  Top

7 楼webwait(webwei)回复于 2006-04-29 15:04:41 得分 0

SELECT   count(*)   as   iCount   from   User_tb   where   UserName='"+userid+"'"  
  ==  
  多余了,直接  
  SELECT   *   from   User_tb   where   UserName='"+userid+"'"  
  if(Dr.Read())  
  {//用户存在,判断密码  
  ....  
  }  
  else  
  {  
  //用户不存在  
  }  
  ===  
  然后检查你的main.aspx有没有问题Top

8 楼webwait(webwei)回复于 2006-04-29 15:08:20 得分 0

另外,你的命名也太混乱了些,很容易出错  
  ===  
  UserId   int    
  UserName   varchar  
  PassWord   varchar  
  UserType   varchar  
  ===  
  如果你的登陆页面要求输入的是UserId和PassWord,TextBox的ID为“Userid”和“Pwd”  
  如果要求输入的是UserName和PassWord,TextBox的ID应为“Username”和“Pwd”  
   
  where   UserName='"+userid+"'"这样很容易看晕的,呵呵Top

9 楼baiyashan(依浪道夫)回复于 2006-04-29 15:10:42 得分 0

404肯定是找不到该页面呀,看看是不是写错了,有时是手误,写错一个字付什么的.Top

10 楼aoyo(遨游~ 认真生活,努力微笑^_^)回复于 2006-04-29 15:10:59 得分 0

如果编译没问题的话,调试一下main.aspxTop

11 楼liuxin001(心动就要行动)回复于 2006-04-29 15:14:09 得分 0

SqlConnection   myConn=new   SqlConnection("server=mood;uid=sa;pwd=00586;database=trans_database;");  
  表中有一个用户为nokia   密码00586       pwd是数据库用户名的密码。建议lz单步调试一下  
  Top

12 楼dengenming(佛尔梅罗之鹰)回复于 2006-04-29 15:14:57 得分 0

IIS下找不到这个文件Top

13 楼aboy85()回复于 2006-04-29 15:38:37 得分 0

谢谢大家的帮忙,我加上了main.aspx了,真二,可是又有新问题了没,我觉得这段代码有点烦:  
    SqlConnection   myConn=new   SqlConnection("server=mood;uid=sa;pwd=00586;database=trans_database;");  
  SqlCommand   myCmd1=new   SqlCommand(mySel,myConn);  
  myCmd1.Connection.Open();  
  SqlDataReader   Dr1;  
  Dr1=myCmd1.ExecuteReader();  
  Dr1.Read();  
  string   Count=Dr1["iCount"].ToString();  
  Dr1.Close();  
  myCmd1.Connection.Close();  
  *********************************************************************************从这开始改的  
  string   DrPwd;  
  if(Count!="0")  
  {  
  mySel="SELECT   *   from   User_tb   where   UserName='"+userid+"'";  
  SqlCommand   myCmd=new   SqlCommand(mySel,myConn);  
                                myCmd.Connection.Open();  
                                SqlDataReader   Dr;  
                                Dr=myCmd.ExecuteReader();  
                                Dr.Read();  
                                DrPwd=Dr["PassWord"].ToString();  
                                Dr.Close();  
                                if(DrPwd==pwd)  
        {  
        Session["logid"]=userid;  
                                   Response.Redirect("main.aspx");  
        Msg.Text="登录成功";  
        }  
        else  
        Msg.Text="登录密码错.";  
  }  
  else  
  Msg.Text="没有这个用户.";  
    *************************************************************************************  
  改成:string   userid,pwd;  
  userid=Userid.Text;  
  pwd=Pwd.Text;        
  string   mySel="SELECT   *   from   User_tb   where   UserName='"+userid+"'";  
  //'"+userid+"'";  
   
   
                          SqlConnection   myConn=new   SqlConnection("server=mood;uid=sa;pwd=00586;database=trans_database;");  
  SqlCommand   myCmd1=new   SqlCommand(mySel,myConn);  
  myCmd1.Connection.Open();  
  SqlDataReader   Dr1;  
  Dr1=myCmd1.ExecuteReader();  
  Dr1.Read();  
  ****************************************************从这里改了  
  if(Dr1.Read())  
  {  
  string   DrPwd;  
  DrPwd=Dr1["PassWord"].ToString();  
  if(DrPwd==pwd)  
  {  
  Session["logid"]=userid;  
                                   Response.Redirect("main.aspx");  
  Msg.Text="登录成功!";  
  }  
  else  
  Msg.Text="登录密码错!";  
  }  
  else  
  Msg.Text="没有这个用户!";  
   
   
   
  然后我用nokia和00586登录,弹出没有这个用户;说明if(Dr1.Read())为假,为什么呀,  
  谢谢高手了,在线哭等!!!!!Top

14 楼jasonduan007(幽谷清水)回复于 2006-04-29 15:44:30 得分 0

Dr1.Read();  
  你只读了一行呀Top

15 楼xiaoyaofan()回复于 2006-04-29 15:46:35 得分 0

你别着急啊,别这样看代码都疯了把所有的代码重法一次我们帮你调调!!!Top

16 楼hdj2002(君恋裳)回复于 2006-04-29 15:50:28 得分 0

("server=mood;uid=sa;pwd=00586;database=trans_database;");  
  该  
  ("server=IP地址看看;uid=sa;pwd=00586;database=trans_database;");Top

17 楼jasonduan007(幽谷清水)回复于 2006-04-29 15:51:56 得分 0

还有你的登陆也太麻烦了吧!  
  拿这个改改吧(:  
  CREATE   PROCEDURE   sysEmpLogin  
        @loginid   varchar(50),  
        @password   varchar(50),  
        @empid   int   output,  
        @reason   varchar(50)   output  
       
  AS  
                    select   UserId   from   User_tb     where     UserName   =   @loginid  
                    if   (@@RowCount<1)  
                          begin   ----1  
                                set     @reason   ='noEmp'  
                                  set       @empid=0  
                            end------1  
                    else    
                                  begin     ----2                  
           
          SELECT       UserId      
            FROM   mrBaseInf  
                          WHERE   (UserName   =   @loginid)   AND   (PassWord   =   @password   )  
                                            if   (@@RowCount<1)  
                                                  begin   -----3  
                                                    set     @reason   ='pError'  
                                                      set       @empid=0  
                                                    end-------3  
                                          else  
                                                                      begin     ------4  
                                                                      SELECT       @empid=inf.UserId   FROM   User_tb   inf  
                                                                       
      WHERE   (inf.UserName   =   @loginid)   AND   (inf.Password   =   @password   )  
                                                                                  if   (@@RowCount<1)  
                                                  begin   ---------6  
                                                      set     @reason   ='unAllow'  
                                                      set       @empid=0  
                                                    end------------6  
                                                              else  
                                                                                    begin   -----7  
                                                                                    set     @reason   ='access'  
                                                                                    end     ----------7  
                                                                      end   -----4                  
                                  end------2  
  RETURN  
   
   
   
  GO  
  Top

18 楼forcall(折腾)回复于 2006-04-29 15:56:57 得分 0

看问题是找不到main.aspx  
  把其它代码都注释了,只留Response.Redirect("main.aspx");看是否通过,如果main.aspx和你这个页面在一个目录下应该没为题。Top

19 楼chinagy(会员GY)回复于 2006-04-29 15:57:39 得分 0

按理说就应该有一行记录,但你已读了两遍了.取消Dr1.Read();这一行.  
  再一个你的代码里不加容错处理吗?  
  Top

20 楼hdj2002(君恋裳)回复于 2006-04-29 16:03:26 得分 0

我写的代码,你参考下:  
   
  string   strConn=ConfigurationSettings.AppSettings["dsn"];  
  SqlConnection   cn=new   SqlConnection(strConn);  
  cn.Open();  
  string   strsql="select   *   from   users   where   uid='"+TextBox1.Text.Trim()+"'   and   upassword='"+TextBox2.Text.Trim()+"'";  
  SqlCommand   cm=new   SqlCommand(strsql,cn);  
  SqlDataReader   dr=cm.ExecuteReader();  
   
  f   (dr.Read())  
  {  
  Session["userid"]=dr["UID"];  
  Session["userpower"]=dr["upower"];  
  if   ((int)Session["userpower"]==1)  
  {  
  Response.Redirect("users.aspx");  
  }  
  else   if((int)Session["userpower"]==2)  
  {  
  Response.Redirect("updateinfor.aspx");  
  }  
  else  
  {  
        Response.Redirect("");  
  }  
  }  
  else  
  {  
  Response.Write("<script   language='javascript'>   alert('你输入的密码或用户编号错误')</script>");  
  return;  
  }  
  cn.Close();  
  }Top

21 楼hnaulxd(博士)回复于 2006-04-29 16:07:11 得分 0

就是找不到一个文件,在指定的路径中没有这个文件,就什么大不了的。Top

22 楼aboy85()回复于 2006-04-29 16:45:50 得分 0

这是我的全部的  
  代码  
  using   System;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Data;  
  using   System.Drawing;  
  using   System.Web;  
  using   System.Web.SessionState;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
  using   System.Data.SqlClient;  
  namespace   WebApplication1  
  {  
  ///   <summary>  
  ///   WebForm1   的摘要说明。  
  ///   </summary>  
  public   class   WebForm1   :   System.Web.UI.Page  
  {  
  protected   System.Web.UI.WebControls.Label   Label1;  
  protected   System.Web.UI.WebControls.Label   Label2;  
  protected   System.Web.UI.WebControls.TextBox   Userid;  
  protected   System.Web.UI.WebControls.TextBox   Pwd;  
  protected   System.Web.UI.WebControls.RequiredFieldValidator   rfvUserid;  
  protected   System.Web.UI.WebControls.RequiredFieldValidator   rfvPwd;  
  protected   System.Web.UI.WebControls.Button   LogButton;  
  protected   System.Web.UI.WebControls.Label   Msg;  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  }  
   
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.LogButton.Click   +=   new   System.EventHandler(this.LogButton_Click);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
   
  private   void   LogButton_Click(object   sender,   System.EventArgs   e)  
  {  
  string   userid,pwd;  
  userid=Userid.Text;  
  pwd=Pwd.Text;        
  string   mySel="SELECT   *   from   User_tb   where   UserName='"+userid+"'";  
   
   
   
                          SqlConnection   myConn=new   SqlConnection("server=mood;uid=sa;pwd=00586;database=trans_database;");  
  SqlCommand   myCmd1=new   SqlCommand(mySel,myConn);  
  myCmd1.Connection.Open();  
  SqlDataReader   Dr1;  
  Dr1=myCmd1.ExecuteReader();  
  Dr1.Read();  
  if(Dr1.Read())  
  {  
  string   DrPwd;  
  DrPwd=Dr1["PassWord"].ToString();  
  if(DrPwd==pwd)  
  {  
  Session["logid"]=userid;  
                                   Response.Redirect("main.aspx");  
  Msg.Text="登录成功!";  
  }  
  else  
  Msg.Text="登录密码错!";  
  }  
  else  
  Msg.Text="没有这个用户!";  
   
   
  }  
  }  
  }  
  谢谢了Top

23 楼baiyashan(依浪道夫)回复于 2006-04-29 16:47:18 得分 0

有时候哭完后心情会好的.Top

24 楼webwait(webwei)回复于 2006-04-29 17:23:14 得分 0

....  
  Dr1.Read();//这行不要  
  if(Dr1.Read())  
  ....  
  Session["logid"]=userid;  
  Response.Redirect("main.aspx");  
  Msg.Text="登录成功!";//这行不要,要了也没用  
  .....Top

25 楼division(好风长吟)回复于 2006-04-29 17:32:30 得分 0

用存储过程可能好点。我最开始写登录也是你这样写的,贴出来参考下,见笑了:  
  ///   <summary>  
                ///   检查是否为管理员登录  
                ///   </summary>  
                ///   <param   name="adminID">输入的ID</param>  
                ///   <param   name="adminPwd">输入的密码</param>  
                ///   <returns>为管理员返回字符串“Admin”,否则返回字符串“None”</returns>  
                  public   static   string   CheckIfAdminLogin(string   adminID,   string   adminPwd)  
                  {  
                          string   userState   =   "None";  
                          try  
                          {  
                                  if   (Conn.State   !=   ConnectionState.Open)  
                                          Conn.Open();  
                                  SqlCommand   cmd   =   new   SqlCommand();  
                                  cmd.CommandText   =   "Select   count(*)   as   icount   from   AdminList   Where   AdminID='"   +   adminID   +   "'And   AdminPwd='"   +   adminPwd   +   "'";  
                                  cmd.Connection   =   Conn;  
                                  SqlDataReader   dr   =   cmd.ExecuteReader();  
                                  dr.Read();  
                                  string   count   =   dr["icount"].ToString();  
                                  if   (count   !=   "0")  
                                  {  
                                          userState   =   "Admin";  
                                          return   userState;  
                                  }  
                                  dr.Close();  
                                  Conn.Close();  
                                  return   userState;  
                          }  
                          catch  
                          {  
                                  Conn.Close();  
                                  throw;  
                          }  
                  }Top

26 楼bufan2162(永远保持前进状态)回复于 2006-04-29 17:52:35 得分 0

楼上很多了,我就不多说了,综合考虑一下Top

27 楼pbwf(书生)回复于 2006-04-29 18:30:14 得分 0

嗯初学可以直接打代码.下程序上面只要有后台,怎么肯定有登陆吧.呵呵.费话.  
   
  然后再改为存储过程.这样我觉得好一些.Top

28 楼aboy85()回复于 2006-04-29 19:23:32 得分 0

谢谢各位的帮忙,不胜感激,祝大家五一快乐  
  Top

29 楼return_more(买椟还珠)回复于 2006-04-29 22:57:05 得分 0

真不容易。  
  只是,问题解决了却不结帖  
  ????Top

30 楼wls12342004(青青子木)回复于 2006-04-30 08:42:45 得分 0

随便写个html,看看能不能访问,如果能的话,应该就是main.aspx问题了.  
  找不到是不是虚拟目录的问题.Top

31 楼zftow110()回复于 2006-04-30 09:37:11 得分 0

我倒,一个登陆写成这样,也.....Top

32 楼shuangfeiyan()回复于 2006-04-30 10:34:45 得分 0

大哥,用参数化吧,,不然有SQL漏洞。Top

33 楼Climb_Tree(climbTree@msn.com)回复于 2006-04-30 10:59:06 得分 0

请结帖Top

34 楼anheizhizi(目标:★★★★★)回复于 2006-04-30 11:13:44 得分 0

404   是页面不存在啊。。。Top

35 楼nutpp()回复于 2006-04-30 13:36:17 得分 0

这么低级的错误都要搞2天,公司应该把你开了才对Top

36 楼woanon(嗳老虎游)回复于 2006-04-30 15:12:08 得分 0

学习一下Top

37 楼lubosun(大白菜)回复于 2006-04-30 15:23:48 得分 0

写的有点乱了....楼主+UTop

38 楼mingwj1980()回复于 2006-04-30 16:21:28 得分 0

登录是最最最基本的东西了,都搞成这样,那其它的东西还有指望么?效率也太底了吧,按你的效率,一个月下来也为公司干不了什么事情的Top

39 楼skywangjian123_skywj(网络的天空)回复于 2006-04-30 16:21:39 得分 0

是IIS报错的文件没设置好,实际上应该是你程序出错了  
  Top

40 楼skywangjian123_skywj(网络的天空)回复于 2006-04-30 16:23:23 得分 0

你先把   这个   程序段删掉,如果能访问,则是程序错了,这时再慢慢补上代码,进行单部调试Top

41 楼chenhaoying(风雨无阻)回复于 2006-04-30 16:29:54 得分 0

是跳转找不到页面,看看你有没有main.aspx页面啊。Top

42 楼endyhua()回复于 2006-04-30 16:32:17 得分 0

建议设置断点调试Top

43 楼Samen168(Code to coding)回复于 2006-04-30 16:39:32 得分 0

迷糊哦Top

44 楼shnyuyiyu()回复于 2006-04-30 17:03:43 得分 0

路过学习.Top

45 楼liujianlove(最爱.net)回复于 2006-04-30 17:18:43 得分 0

给的内容太少了。Top

46 楼newline2000(修改你在CSDN社区的信息)回复于 2006-05-01 01:32:36 得分 0

我遇到过你说的问题,我的情况是在本机上调试一切正常,但上传到服务器就出现你说的404错误,这时候我将Web.config的<customErrors   mode="RemoteOnly"   />的RemoteOnly改成了OFF   ,出现错误黄页,提示数据库缺少一个更新语句,反复检查发现,服务器端居然将我数据库读权限都取消了,甚至数据库文件是只读属性!造成了我数据库操作的一系列错误,但是客户端返回的错误页都是404,我又回到本机上,按照服务器端的设置,提示了一堆错误   ,但错误页都不是404  
  希望能给你点提示。Top

47 楼Azz1()回复于 2006-05-01 02:28:16 得分 0

这样写SQL登录验证可是有漏洞的哦:如果我在用户名输    
        aaa'   or   1=1   and   '  
  哪任何人都能登入你的系统了;-)Top

48 楼Azz1()回复于 2006-05-01 02:34:15 得分 0

我是指这种写法:  
  Select   count(*)   as   icount   from   AdminList   Where   AdminID='"   +   adminID   +   "'And   AdminPwd='"   +   adminPwd   +   "'";Top

49 楼mingwj1980()回复于 2006-05-15 13:41:52 得分 0

请结贴~~~~~~~~~~Top

相关问题

关键词

得分解答快速导航

  • 帖主:aboy85

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

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