繁体   English   中英

用户注册-asp.net时,用户名检查不起作用

[英]Username check is not working when user registers -asp.net

我想检查用户名是否已存在于数据库中,如果是,错误消息将提示“用户名已存在”。 现在我有此代码,但无法正常工作。 即使从数据库复制了用户名,程序仍会接受该用户名。 有人可以帮我吗? 这是我的完整注册码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
            conn.Open();
            string checkuser = "select count(*) from UserData where Username = '" + txtUser.Text + "'";
            SqlCommand scm = new SqlCommand(checkuser, conn);
            int temp = Convert.ToInt32(scm.ExecuteScalar().ToString());
            if (temp == 1) // check if user already exist.
            {
                Response.Write("User already existing");
            }
            conn.Close();
        }
    }
    protected void btn_Registration_Click(object sender, EventArgs e)
    {
        try
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
            conn.Open();
            string insertQuery = "insert into UserData(Username,Firstname,Lastname,Email,Password,CustomerType,DeliveryAddress,Zip,ContactNumber)values(@Username,@Firstname,@Lastname,@Email,@Password,@CustomerType,@DeliveryAddress,@Zip,@ContactNumber)";
            SqlCommand scm = new SqlCommand(insertQuery, conn);
            scm.Parameters.AddWithValue("@Username", txtUser.Text);
            scm.Parameters.AddWithValue("@Firstname", txtFN.Text);
            scm.Parameters.AddWithValue("@Lastname", txtLN.Text);
            scm.Parameters.AddWithValue("@Email", txtEmail.Text);
            scm.Parameters.AddWithValue("@Password", BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text));
            scm.Parameters.AddWithValue("@CustomerType", RadioButtonList1.SelectedItem.ToString());
            scm.Parameters.AddWithValue("@DeliveryAddress", txtAddress.Text);
            scm.Parameters.AddWithValue("@Zip", txtZip.Text);
            scm.Parameters.AddWithValue("@ContactNumber", txtContact.Text);

            scm.ExecuteNonQuery();
            Session["Contact"]= txtContact.Text;
            Session["Email"] = txtEmail.Text;
            Session["DeliveryAddress"] = txtAddress.Text;
            label_register_success.Text = ("Registration Successful!");
            //Response.Redirect("Home.aspx");
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write("Error:" + ex.ToString());
        }
    }

您验证Page_Load上的数据吗? 我认为,您可以选择这些解决方案

  1. 在插入数据之前,必须在btn_Registration_Click中完成此操作,或者
  2. 也许,您可以将其修改为在sp中执行,如果数据重复则通过它抛出消息并在那里进行检查。

应该是这样(根据解决方案1)

protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
        }
    }
    protected void btn_Registration_Click(object sender, EventArgs e)
    {
        try
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
            conn.Open();
            string checkuser = "select count(*) from UserData where Username = '" + txtUser.Text + "'";
            SqlCommand scm = new SqlCommand(checkuser, conn);
            int temp = Convert.ToInt32(scm.ExecuteScalar().ToString());
            if (temp > 0) // check if user already exist.
            {
                Response.Write("User already existing");
            }
            else
            {
                string insertQuery = "insert into UserData(Username,Firstname,Lastname,Email,Password,CustomerType,DeliveryAddress,Zip,ContactNumber)values(@Username,@Firstname,@Lastname,@Email,@Password,@CustomerType,@DeliveryAddress,@Zip,@ContactNumber)";
                scm = new SqlCommand(insertQuery, conn);
                scm.Parameters.AddWithValue("@Username", txtUser.Text);
                scm.Parameters.AddWithValue("@Firstname", txtFN.Text);
                scm.Parameters.AddWithValue("@Lastname", txtLN.Text);
                scm.Parameters.AddWithValue("@Email", txtEmail.Text);
                scm.Parameters.AddWithValue("@Password", BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text));
                scm.Parameters.AddWithValue("@CustomerType", RadioButtonList1.SelectedItem.ToString());
                scm.Parameters.AddWithValue("@DeliveryAddress", txtAddress.Text);
                scm.Parameters.AddWithValue("@Zip", txtZip.Text);
                scm.Parameters.AddWithValue("@ContactNumber", txtContact.Text);

                scm.ExecuteNonQuery();
                Session["Contact"]= txtContact.Text;
                Session["Email"] = txtEmail.Text;
                Session["DeliveryAddress"] = txtAddress.Text;
                label_register_success.Text = ("Registration Successful!");
                //Response.Redirect("Home.aspx");
            }
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write("Error:" + ex.ToString());
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM