首页 > 解决方案 > 如何在 asp.net c# 中对电子邮件和联系人(相同的 TextBox)使用多个客户端验证?

问题描述

如何使用一个TextBox和多个验证我试过这个

private Boolean checkemail() // for checking email in database    
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);//sql connection string
    Boolean emailavailable = false;
    String myquery = "Select * from [test].[dbo].[MYFORM] where email='"+ TXTEmail.Text+"'";

    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = myquery;
    cmd.Connection = conn;
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    DataSet ds = new DataSet(); //dataset
    da.Fill(ds);
    if (ds.Tables[0].Rows.Count > 0)
    {
        emailavailable = true;
    }
    conn.Close();
    return emailavailable;
}

数据库中电子邮件签入的c#代码

标签: c#asp.net

解决方案


第一点:让我们回到基础:js验证

在将输入发送到服务器后,服务器端验证由 Web 服务器执行。

在将输入发送到 Web 服务器之前,客户端验证由 Web 浏览器执行。

例如:客户端验证将包括电子邮件格式(它是有效的电子邮件吗?)并检查服务器需要的空字段等。

服务器端验证将检查电子邮件是否尚未被其他用户以另一种形式使用(如您的情况),并且它发生在您的后端系统中。

第二点: SqlInjection。如评论中所述,使用参数进行 sql 清理。这是一个非常基本的漏洞利用。

private Boolean checkemail() // for checking email in database    
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);//sql connection string
    Boolean emailavailable = false;
    String myquery = "Select * from [test].[dbo].[MYFORM] where email = @email";

    SqlCommand cmd = new SqlCommand();
    cmd.Parameters.Add("@email", SqlDbType.Text);
    cmd.Parameters["@email"].Value = TXTEmail.Text;
    cmd.CommandText = myquery;
    cmd.Connection = conn;
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    DataSet ds = new DataSet(); //dataset
    da.Fill(ds);
    if (ds.Tables[0].Rows.Count > 0)
    {
        emailavailable = true;
    }
    conn.Close();
    return emailavailable;
}

第三点:多重检查

如果我明白你在说什么,你想用两个参数进行查询。像这样使用 sql 或运算符:

String myquery = "Select * from [test].[dbo].[MYFORM] where email = @email or contact = @contact";
cmd.Parameters.Add("@email", SqlDbType.Text);
cmd.Parameters["@email"].Value = TXTEmail.Text;
cmd.Parameters.Add("@contact ", SqlDbType.Text);
cmd.Parameters["@contact "].Value = TXTEmail.Text;

推荐阅读