Asp.net 如何防止用户重新提交表单?

Asp.net 如何防止用户重新提交表单?,asp.net,vb.net,single-page-application,Asp.net,Vb.net,Single Page Application,我正在开发一个单页应用程序 在应用程序结束时,用户可以提交他的联系信息(姓名、电话号码等)。这会发送一封电子邮件,并将页面修改为“感谢提交[…]”页面 问题是,客户端可以按后退按钮,然后重新发送电子邮件 有没有办法防止这种。。垃圾邮件 代码 Sub BT_Send(发送方作为对象,e作为事件参数)处理BT_Send。单击 尝试 '创建电子邮件消息 将mailMessage设置为新的mailMessage() mailMessage.To.Add(“SomeOne@a.com") mailMess

我正在开发一个单页应用程序

在应用程序结束时,用户可以提交他的联系信息(姓名、电话号码等)。这会发送一封电子邮件,并将页面修改为“感谢提交[…]”页面

问题是,客户端可以按后退按钮,然后重新发送电子邮件

有没有办法防止这种。。垃圾邮件

代码
Sub BT_Send(发送方作为对象,e作为事件参数)处理BT_Send。单击
尝试
'创建电子邮件消息
将mailMessage设置为新的mailMessage()
mailMessage.To.Add(“SomeOne@a.com")
mailMessage.From=新邮件地址(“Robot@a.com“,“机器人”)
mailMessage.Subject=“测试”
mailMessage.IsBodyHtml=True
mailMessage.Body=LBL_Emailbody.Text&_



我是机器人,如果你给我发信息,我不会回答 Dim smtpClient作为新的smtpClient(“Something.com”) smtpClient.Send(mailMessage) PNL_Before.Visible=假 PNL_After.Visible=真 特例 LBL_errorEmail.Visible=True “不应该发生。。。 结束尝试 端接头
这里是一个非常简单的示例,我在页面上使用一个静态变量,避免使用数据库

asp.net页面是


  • 其他控制
  • 代码

  • 您可以存储一个cookie来表示用户已经使用了表单,当您检测到该cookie时,请不要允许该表单。有一些方法。。。您可以保留用户发送的最后一封电子邮件,并避免重新发送非常近的即时联系人。@fahadash如果用户禁用了Cookie怎么办?@Aristos将最后一封电子邮件保留在哪里?(如果你的意思是将其保存在接收端,那么他仍然可以发送它。如果是使用cookie,用户可以禁用cookie并仍然这样做)你可以将它们保存在数据库中,如果你没有数据库,一种快速简便的方法是使用静态变量(例如字典)。静态变量可以保存最后的电子邮件,每个池,它们在重新编译时丢失,但是你可以做一些工作。非常有趣!我已经知道蜜罐把戏和验证码了。我不必保护自己免受机器人攻击,因为用户必须注册一个经过验证的电子邮件帐户才能发送电子邮件。我试图理解,但我似乎不明白它自己存储在哪里?(因为每次发帖回来,每个变量都是空的)@Sifu我都做了更新来清除旧数据。看,我把它放在静态的位置,这样它就可以存储在asp.net池的全局数据中。@Sifu试试看,它很酷,而且还能工作:)我已经制作并测试了它。我明白了!谢谢你花时间写这篇文章。我将使用它来防止多次发送。