大家帮帮我,快哭了,这两天没干别的,光整这登录了!!!!
我先加了几个控件
在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




