C# 用户名无效。无法从数据库(ASP.net)读取用户名
我试图创建一个连接到数据库的登录页面。但这表明用户是无效的。我可以知道有什么问题吗?谢谢 以下是完整的代码:C# 用户名无效。无法从数据库(ASP.net)读取用户名,c#,asp.net,C#,Asp.net,我试图创建一个连接到数据库的登录页面。但这表明用户是无效的。我可以知道有什么问题吗?谢谢 以下是完整的代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; using Sy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ToString());
conn.Open();
string checkuser = " select count(*) from [Table] where UserName = ' " + TextBoxUserName.Text + "' and Password='"+ TextBoxPassword.Text + "' ";
SqlCommand com = new SqlCommand(checkuser, conn);
int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
if (temp == 1)
{
Session["user"] = TextBoxUserName.Text;
Response.Write("Login success");
}
else
{
Response.Write("Login fail");
}
}
首先回答你的问题:你有一个空间,在那里你不应该有一个。
其中UserName='”
系统也检查了这个空间,这是错误的。你只想要文本框的内容,对吗
第二件事是此代码的安全性。您的代码非常容易受到sql注入的攻击,密码不应该是纯文本,哈希是更好的答案。您是否有一个名为
用户
的会话?您能否向我们提供完整的错误消息?用户是否存储在[表]中
或者这只是示例代码中的一个占位符?作为一个侧节点,不要将用户输入直接连接到SQL查询,而是使用SqlParameter
来防止(例如,我可以将TextBoxPassword作为发送;删除表[TABLE];
)PS:您似乎还将密码以纯文本形式存储在数据库中?使用内置的登录方式比使用自行开发的解决方案更安全。。。