c# - 如何在 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#代码
解决方案
第一点:让我们回到基础: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;
推荐阅读
- javascript - 我将如何通过网络应用程序编译代码?
- java - 对固定长度的字符串进行排序
- sas - 如何在 SAS DI Studio 中创建新的转换类别?
- laravel - 安装 Namecheap 的 PositiveSSL 后禁止 403
- c++ - 如何扩展 integer_sequence?
- rust - 为 JSON 实现 serde::Deserialize 时无法在 fn 项中捕获动态环境
- .htaccess - htaccess 中 301 重定向的通配符 RewriteRule
- django - 在 Django 中完成页面底部的表单后,将用户移动到同一个地方
- visual-studio-code - VSCode:如何执行“快速打开->水平拆分”?
- python - 单击带有 Selenium 的 ComboButton 项