我正在使用Visual Studio在C#中创建一个asp.net Web应用程序。我有一个父母的注册页面,它将信息存储在我创建的数据库表中。我现在需要创建一个登录页面,如果输入的用户名和密码正确,用户将被重定向到付款页面。
到目前为止我所做的工作在一定程度上。我将显示我的代码,以及主要错误的屏幕截图。如果有人能指出我哪里出错了,我会非常感激。
username + password = CORRECT - 我收到“密码正确”文字
username + password = BOTH WRONG - 我收到“用户名不正确”文字
用户名(不正确)+密码(正确) - 我收到“用户名不正确”文字
用户名(CORRECT)+密码(NOTcorrect) - 我收到此错误(见截图)
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.Configuration;
using System.Data.SqlClient;
namespace Coursework
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void loginButton_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["newregDBConnectionString"].ConnectionString);
conn.Open();
string checkUser = "select count(*) from parent where parentID='" + userText.Text + "'";
SqlCommand com = new SqlCommand(checkUser, conn);
int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
conn.Close();
if (temp == 1)
{
conn.Open();
string checkPassword = "select password from parent where password='" + passText.Text + "'";
SqlCommand passCom = new SqlCommand(checkPassword, conn);
string password = passCom.ExecuteScalar().ToString().Replace(" ","");
if(password == passText.Text)
{
Session["New"] = userText.Text;
Response.Write("Password is correct");
}
else
{
Response.Write("Password is not correct");
}
}
else
{
Response.Write("Username is not correct");
}
conn.Close();
}
}
}
答案 0 :(得分:4)
ExecuteScalar返回对象
public override object ExecuteScalar()
因此您需要检查null
值
var obj = passCom.ExecuteScalar();
string password = obj?.ToString().Trim();
同时开始使用SqlCommand.Parameters保护您免受Sql injection
的侵害