Asp.net 为什么我的logdiv在单击“登录”按钮后消失?
我有一个div logdiv,它在单击登录按钮进行登录后出现。div中有一个名为signin button的按钮。当我单击登录按钮进行登录时,页面会重新加载,无论用户ID和密码是否匹配,它都会消失logdiv。我想保留它,直到密码和用户ID匹配为止 我的logdiv部分Asp.net 为什么我的logdiv在单击“登录”按钮后消失?,asp.net,Asp.net,我有一个div logdiv,它在单击登录按钮进行登录后出现。div中有一个名为signin button的按钮。当我单击登录按钮进行登录时,页面会重新加载,无论用户ID和密码是否匹配,它都会消失logdiv。我想保留它,直到密码和用户ID匹配为止 我的logdiv部分 <div id="logdiv" runat="server"> <p id="logidlabel">User ID</p> <asp:TextBox ru
<div id="logdiv" runat="server">
<p id="logidlabel">User ID</p>
<asp:TextBox runat="server" ID="logintext" CssClass="logusertext"></asp:TextBox>
<p id="logpasslabel">Password</p>
<asp:TextBox runat="server" ID="logpasstext" CssClass="logpasstext" TextMode="Password"></asp:TextBox>
<asp:Button runat="server" ID="signin" CssClass="signinbt" Text="Sign in" OnClick="signin_Click"/>
<asp:Label ID="errorsignin" runat="server" Visible="False" ></asp:Label>
</div>
我不想在密码和用户ID不匹配之前消失logdiv…我正在从数据库获取密码和用户ID..数据库正在重新加载页面吗?让我们先修复最严重的错误-代码中的错误。在执行此操作时,我们将检查
Read()
调用的结果,而不是依赖异常来告诉我们没有行,并使用块将一次性对象包装在中
protected void signin_Click(object sender, EventArgs e)
{
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand comm = new SqlCommand("SELECT password FROM usertable WHERE userid = @username", conn))
{
comm.Parameters.AddWithValue("@username", logintext.Text);
conn.Open();
using (SqlDataReader reader = comm.ExecuteReader())
{
if (reader.Read())
{
string password = reader.GetString(0);
if (password == logpasstext.Text)
{
iframestyle.Attributes["src"] = "userpage.aspx";
}
else
{
errorsignin.Visible = true;
errorsignin.Text = "INVALID LOGIN";
logdiv.Attributes["style"] = "display:block;";
}
}
else
{
errorsignin.Visible = true;
errorsignin.Text = "INVALID LOGIN";
logdiv.Attributes["style"] = "display:block;";
}
}
}
}
编辑:要解决眼前的问题,您需要设置样式
属性,而不是自定义显示
属性
现在我们已经解决了这个问题,您需要重新考虑您的密码存储策略。以纯文本形式存储密码是一个极其糟糕的主意。您应该存储咸哈希。有关更多信息,请查看
最后,看起来你需要抓紧时间;我怀疑您当前的实现将允许未经身份验证的用户请求userpage.aspx
,而无需先登录。虽然不是解决方案,但为什么logpasstext.Text.ToString()?只是logpasstext有什么问题吗?text事实上,我想这没关系。我省略了这个,它也起作用了哦,孩子。。。你的网站只是另一个即将发生的安全漏洞。iframestyle??它是什么??我想这是造成问题的原因。当密码与pass2匹配时没问题。没有问题。我将它重定向到userpage。但是当它与登录div不匹配时,应该保留登录div。虽然我正在编写logdiv,但我不能这样做。attributes[“display”]=“block”,因为在我的css中它有display:none;我应用了这个..但是像我的代码一样,它正在更新,这意味着这个文本显示的是无效登录,但是logdiv正在消失..我不知道为什么???@setu:div
正在消失,因为您添加了一个名为display
的属性,其值为block
。您需要将style
属性的值设置为display:block代码>取而代之。我已经更新了我的答案。
protected void signin_Click(object sender, EventArgs e)
{
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand comm = new SqlCommand("SELECT password FROM usertable WHERE userid = @username", conn))
{
comm.Parameters.AddWithValue("@username", logintext.Text);
conn.Open();
using (SqlDataReader reader = comm.ExecuteReader())
{
if (reader.Read())
{
string password = reader.GetString(0);
if (password == logpasstext.Text)
{
iframestyle.Attributes["src"] = "userpage.aspx";
}
else
{
errorsignin.Visible = true;
errorsignin.Text = "INVALID LOGIN";
logdiv.Attributes["style"] = "display:block;";
}
}
else
{
errorsignin.Visible = true;
errorsignin.Text = "INVALID LOGIN";
logdiv.Attributes["style"] = "display:block;";
}
}
}
}