首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

小妹问一个初学者有关问题:关于数据库登录,PostBackUrl

2012-01-08 
小妹问一个菜鸟问题:关于数据库登录,PostBackUrl问题是这样的:做一个数据库查询,page1是登录页面,page2是

小妹问一个菜鸟问题:关于数据库登录,PostBackUrl
问题是这样的:
做一个数据库查询,page1是登录页面,page2是查询页面,环境:asp.net   +   C#,    
page1,里面有两个label分别用于输入用户名和密码,有一个button,当用户单击时,如果能连上数据库则直接进入查询页面page2(并把用户名和密码跨页传送到page2),如果不能成功则给出错误信息并且不进入查询页面
page1.aspx:
<asp:Button   ID= "Button1 "   runat= "server "   Text= "登录 "   Width= "86px "   OnClick= "Button1_Click "   PostBackUrl   =   "Page2.aspx "   />
(这里为了把用户名和密码跨页传送到page2,用了PostBackUrl)
page1.aspx.cs:
protected   void   Button1_Click(object   sender,   EventArgs   e)
{
try
{     数据库连接 }
catch   (OracleException   ex)
{       Console.WriteLine( "Exception   occurred! ");  
}

现在的问题是:在page1中按"登录"按钮后,如果数据库连接不成功,还是进入了page2页面,我把catch处理改成这样:
catch   (OracleException   ex)
{
                          Console.WriteLine( "Exception   occurred! ");
                          Response.Redirect( "Page1.aspx ");  (加了这一句)
                         
}
现在不会进入page2页面了,但是输入的用户名被清空了.
我希望:如果数据库连接不成功,则不会进入page2,并且page1里已输入的用户名不会被清空,如何做呢?请各位大虾指点一二!谢谢

[解决办法]
catch (OracleException ex)
{
Console.WriteLine( "Exception occurred! ");
//Response.Redirect( "Page1.aspx ");  (加了这一句)
return;

}
[解决办法]
小妹妹,哥哥暂时想不到什么好的解决方法。
你的Response.Redirect( "Page1.aspx ");是重新转到这个页面,等于刷新。用户名当然会被清空。
你可以用button_clientcilck ,ajax来连接数据库,成功返回true,失败返回false.来做
还有个笨方法就是 异常了就 后退回去。
[解决办法]

[解决办法]
page1.aspx:
<asp:Button ID= "Button1 " runat= "server " Text= "登录 " Width= "86px " OnClick= "Button1_Click " /> 去掉PostBackUrl = "Page2.aspx ",则按钮事件里写
protected void Button1_Click(object sender, EventArgs e)
{
try
{ 数据库连接 }
catch (OracleException ex)
{ Console.WriteLine( "Exception occurred! ");
return;
}
Response.Rediert( "Page2.aspx?uid=xx&pwd=xx ");
}

[解决办法]
session保存下不可以 ?
[解决办法]
同意session保存
[解决办法]
关注下~
[解决办法]
汗!!!!!!!!!
[解决办法]
关注下~

[解决办法]
可以用一个js来实现,然而失败的话就让JS显示下就OK了啊
[解决办法]
<asp:Button ID= "Button1 " runat= "server " Text= "登录 " Width= "86px " OnClick= "Button1_Click " PostBackUrl = "Page2.aspx " />

Button1_Clic是不会执行的,要去掉PostBackUrl = "Page2.aspx "
------解决方案--------------------


小妹妹,哥哥也来顶你!呵呵!
[解决办法]
顶小妹
[解决办法]
page1.aspx:
<asp:Button ID= "Button1 " runat= "server " Text= "登录 " Width= "86px " OnClick= "Button1_Click " />
(这里为了把用户名和密码跨页传送到page2,用了PostBackUrl)
page1.aspx.cs:
protected void Button1_Click(object sender, EventArgs e)
{
try
{ 数据库连接 }
catch (OracleException ex)
{ Console.WriteLine( "Exception occurred! ");
}

现在的问题是:在page1中按"登录"按钮后,如果数据库连接不成功,还是进入了page2页面,我把catch处理改成这样:
try{
Server.Transfer( "Page2.aspx ");
}
catch (OracleException ex)
{
Console.WriteLine( "Exception occurred! ");


}

[解决办法]
为何非要在page2里判断用户输入的合法性,在page1里判断,如果合法进入page2,否则还在page1里输出“用户名或密码错误”

[解决办法]
Console.WriteLine???
这是控制台程序用的吧???
[解决办法]
是的 session保存下
[解决办法]
大姐,你这个问题该多看输
seesion是常用的保存敏感信息的状态。他是保存在服务器内存里的...
当然能传。
[解决办法]
楼主的思路有问题,估计你就是想做个用户验证页面,其实很容易实现的,给你讲讲思路:
1.page1.aspx里两个文本框,一个按钮
2.page1.aspx.cs里做用户名和密码的验证
验证没有通过就Response.Write( " <script> alert( '用户名或密码不正确! '); </script> ");
验证通过就保存用户名session[ "name "]=TextBox1.Text;
跳到第二个页面Response.Redirect( "page2.aspx ");
3.page2.aspx里放一个Label1
4.page2.aspx.cs的page load里写上 Label1.Text=Session[ "name "].ToString;
5.出现奇迹!!!

不知道这样解释你能懂否?


[解决办法]
Response.Redirect( "Page1.aspx ");
这是不行嘀,其实MS已经为我们搞定这个些东东了,
就是大名顶顶的viewstate了
或者你可以这样
上面这句改成
Response.Write( " <script> history.back(1); </script> ");
搞定
[解决办法]
里面有两个label分别用于输入用户名和密码,有一个button,当用户单击时,如果能连上数据库则直接进入查询页面page2(并把用户名和密码跨页传送到page2),如果不能成功则给出错误信息并且不进入查询页面

设计可能有问题:
这种是典型的会员管理系统(即先登陆以后才能进入查询,账号的话存session);
试想,如果用户直接从page2的浏览器上输入带参数的查询的时候,根本不需page1页面的的密码验证

[解决办法]

小妹可以参考以下代码,在ASP.net当中传递敏感信息一般都是用Session[ "变量名 "]进行存储
然后在后面的页面当中采用Session[ "变量名 "]就可以你所存储相关信息

protected void confirm_Click(object sender, EventArgs e)
{

string sqlString = "select * from userInfo where userName= ' " +userName.Text.Trim() + " ' and userPassword= ' " +userPwd.Text + " ' ";
SqlConnection conn = new SqlConnection( "Data Source=BLUELIFE154; Initial Catalog=test;Integrated Security=True;User ID=sa;Password= ");
SqlCommand cmd=new SqlCommand(sqlString,conn);
SqlDataReader myReader=cmd.ExecuteReader();
if(myReader.HasRows)
{
Session[ "userName "]=userName.text;
Session[ "userPassword "]=userPwd.text;
Response.Write( " <script> alert( '登录成功! ');window.location.href= 'page2.aspx ' </script> ");


}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), " ", " <script> alert( '登录失败! ') </script> ");

}




}
[解决办法]
当提交先查询,如果数据库里边有这条记录,也就是说有这个用户,然后把他的ID传到第2个页面,如果没有就不让他过去.
[解决办法]
把你的登陆事件设为bool型,如果为true再跳转为false时你可以暂不操作

热点排行