c# - 如何修复与 SQL 相关的登录表单奇怪错误?
问题描述
我已经建立了一个注册表单和一个登录表单,突然由于某种原因我的注册表工作完全正常,但我的登录表单只登录我的 sql 表中的前 5 个成员。对于其他人,它说用户名是假的。
我在 Visual Studio 2015 上,尝试重新启动、保存、更改数据库、输入错误密码并检查数据库中的每个成员。
登录页面.ASPX:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form2" runat="server" action="Logis.aspx" method="get" >
<h2> <font face="Arial"></font></h2>
Username: <input id="Text2" type="text" name="usernameLog"/><br />
Password: <input id="Password2" type="password" name="passwordLog"/><br />
<input id="Submit2" type="submit" value="Log in" /><br />
<!-- <a href="HomePage.aspx">Back to homepage</a> -->
</form>
</body>
</html>
LOGIS.ASPX:
public partial class Logis : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
App_Code.DAL dal = new App_Code.DAL();
string user = Request.QueryString["usernameLog"];
string pass = Request.QueryString["passwordLog"];
if (dal.IsExist(user))
{
if(dal.IsExistPassword(pass))
{
if (dal.IsSame(user, pass))
{
//Response.Write("אתה מחובר");
Response.Redirect("RegisHome.aspx");
}
else
Response.Write("Your password is incorrect");
}
else
Response.Write("This password is incorrect");
}
else
Response.Write("Your username is incorrect");
}
}
}
DAL.cs 功能:
public bool IsExist(string username)
{
string sql = "SELECT COUNT(Username) FROM Users WHERE Username = '" + username + "'";
cmd.CommandText = sql;
cmd.Connection = connection;
connection.Open();
int x = (int)cmd.ExecuteScalar();
connection.Close();
return ((x > 0));
}
public bool IsExistPassword(string password)
{
string sql = "SELECT COUNT(Password) FROM Users WHERE Password = '" + password + "'";
cmd.CommandText = sql;
cmd.Connection = connection;
connection.Open();
int x = (int)cmd.ExecuteScalar();
connection.Close();
return ((x > 0));
}
public bool IsSame(string username, string password)
{
string sql = "SELECT Password FROM Users WHERE Username = '" + username + "'";
cmd.CommandText = sql;
cmd.Connection = connection;
connection.Open();
string pp = (string)cmd.ExecuteScalar();
connection.Close();
return (pp == password);
}
我希望它在每个用户登录时登录,但它只为前 5 个用户登录。
解决方案
我已经放弃了这个网站,决定尝试打开一个新的。经过一个小时创建一个与这个相同的新网站后,我终于找到了问题所在。出于某种原因,白天我设计了所有 css 东西,数据访问层操作InsertUser应该在注册时将用户数据插入表中,设置为internal而不是public。由于某种原因,该程序没有发送一条错误消息说它无法到达桌子,但它决定忽略这个问题。非常简单和烦人的错误,仍然感谢大家的慷慨支持和帮助。
编辑:你猜怎么着,它再次不起作用。我没有完全检查它,但经过一些 CSS 乐趣后,我完全检查了它,但它不起作用。我可以向您保证,如果我从表查询中手动添加用户,我可以以他的身份登录。但是当我注册时,用户数据进入表格,但我无法以他的身份登录。
推荐阅读
- google-apps-script - 图片功能不生成二维码。如何从二维码生成url中获取数据?
- kubernetes - 可以在 OpenShift 服务中同时包含 alpha 和 beta 注释吗?
- kubernetes - 如何将从 .txt 创建的 configmap 添加到 pod?
- java - Java Swing actionPerformed() 跳过可视化
- python - 如何在 django 过滤器中编辑字段名称,并添加样式
- java - 在 HiDPI 屏幕上的 IntelliJ Idea Community 中运行 Swing 应用程序
- python - 异常值:类型字符变化的值太长(2)
- vba - 在 MS Word 中将项目符号列表转换为 SmartArt 的宏
- javascript - 即使在 React/Node/Passport 上添加 CORS 选项以进行 Google 身份验证后,仍面临 CORS 错误
- mysql - 如何使 WHERE 子句中的计算也成为结果?