0

我试图从按钮 onclick 事件中调用一个函数,但它没有执行该函数。下面是代码:

<script runat="server">

    protected void RegistrationButton_Click(object sender, EventArgs e)
    {
        TextBox un = Post0.FindControl("aspxTextBox_UserName") as TextBox;
        TextBox pwd = Post0.FindControl("aspxTextBox_Password") as TextBox;
        TextBox cpwd = Post0.FindControl("aspxTextBox_ConfirmPassword") as TextBox;
        TextBox txtE = Post0.FindControl("aspxTextBox_Email") as TextBox;
        TextBox SQ = Post0.FindControl("aspxTextBox_SecurityQ") as TextBox;
        TextBox SA = Post0.FindControl("aspxTextBox_SecurityA") as TextBox;

        if (pwd == cpwd)
        {
            System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection("ConString_Online_EMS_AFRICA_db");

            System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
            cmd.CommandType = System.Data.CommandType.Text;
            cmd.CommandText = "INSERT INTO EMSPWD (Username, Password, Email, SecurityQ, SecurityA) VALUES (" + un + ", " + pwd + ", " + txtE + ", " + SQ + ", " + SA + " )";
            cmd.Connection = sqlConnection1;

            sqlConnection1.Open();
            cmd.ExecuteNonQuery();
            sqlConnection1.Close();

            Response.Redirect("02_Registration.aspx");
        }
        else
        {
            Console.WriteLine("Passwords don't Match");
        }
    }
</script>

<asp:Button ID="RegistrationButton_Click" runat="server" CssClass="emsafrica-button" Text="Click to Create User Account" ValidationGroup="Login1" onclick="RegistrationButton_Click" TabIndex="7"/>
4

2 回答 2

4

我会先将您的代码放在后面的代码中,而不是将其嵌入页面中。如果您确实将其嵌入到页面中,那么我认为您需要将语言指定为C#.

除此之外,您的代码看起来无法正常工作,如果您对其进行修改,那么您将面临 SQL 注入攻击。我推荐以下步骤:

  1. 将您的点击事件移动到后面的代码
  2. 阅读参数化查询

您访问文本框的方法似乎也过于复杂。FindControl您使用而不是仅使用控件的名称是否有原因?

于 2013-06-06T17:29:25.340 回答
2

当 Visual Studio 和 C# 在 WebForms 和 MVC 中提供非常好的开箱即用模板并内置完整的用户注册系统时,为什么还要发明登录和注册代码。

在创建新的 VS 项目时查看模板(我的示例来自 VS2012)并选择

“Visual C# -> Web-> ASP.NET Web 窗体应用程序”

或者

“Visual C# -> Web -> ASP.NET MVC 4 Web 应用程序 -> Internet 应用程序”

这些将为您提供更强大的起点,消除您需要为自己编写的代码量,并显着降低 SQL 注入攻击的可能性。

于 2013-06-06T17:44:26.427 回答