在复合web控件中,封装CaptchaImage反垃圾邮件项目

分享于 

5分钟阅读

Web开发

  繁體

Sample Image - CaptchaImageControl.jpg

介绍

本文继续在CodeProject上找到一个现有文章,并由Brainjar编写。 你将在这里找到这个项目 他提出了一个好的策略来防止垃圾邮件来自垃圾邮件发送者:

基于java的CAPTCHA代表了,它是一个程序,可以通过某种类型的生成测试告诉人们机器。 大多数人很容易通过,但电脑程序却不能。

然而,当你注册在线电子邮件或者论坛帐户时,你可能会遇到这样的测试。 表单可以能包含一个像上面所示的扭曲文本的图像,你需要输入到文本字段中。

的想法是防止垃圾邮件发件人使用网络机器人自动发布表单数据,以便创建电子邮件帐户( 发送垃圾邮件) 或者提交反馈意见或者包含垃圾邮件的留言条。 图像中的文本通常被扭曲,以防止使用 OCR ( 光学字符识别器) 软件来破坏进程。 Hotmail,贝宝,雅虎,以及很多博客网站都采用这种技术。

我想要的是一个控件,我可以用它来放在我的网页上,这个控件应该立即防止垃圾邮件。

这个想法

我已经写了一个 WebControl,它封装了:

  • 图像:这里图像用作源" CaptchaImage.axd"。 这个"页面"实际上是一个HTTP处理程序,它将返回响应流中的图像。 这里图像包含"反垃圾邮件"代码,并使用BrainJar提供的CaptchaImage 对象生成。
  • 文本框:用户必须填写文本框中的图像代码,以确保它不是工作在窗体上的自动化 shell。
  • 一个 RequiredValidator: 这将确保在文本框中填充了数据。
  • :它将使用存储在会话中的反垃圾邮件代码测试textbox中的文本。

内容

Design of CaptchaImageControl usage

如何安装

  • 添加对 CaptchaImage 程序集的引用。
  • 在 web.config 文件中,有两个要在 /configuration/system.web 中添加的行:
  • ./HttpHandler 部分中,添加对返回生成的CaptchaImage的处理程序的引用。
<httpHandlers><addverb="GET"path="CaptchaImage.axd"type="CaptchaImage.CaptchaImageHttpHandler"/></httpHandlers>
  • ./controls 部分,添加包含有趣的web控件的Captcha图像程序集的标记引用。
<controls><addtagPrefix="Captcha"namespace="CaptchaImage"assembly="CaptchaImage"/></controls>
  • 嗯。几乎完成了。 现在,我们开始使用它。

如何使用它

  • 创建你的表单以防止垃圾邮件。
  • 拖放已经出现在工具栏中的网页控件,或者添加这里标记:
<Captcha:CaptchaControlrunat="server"ID="captcha"/>
  • 在提交按钮上指定一个 ValidationGroup,并给代码验证控件的ValidationGroup 属性提供相同的名称。
ValidationGroup="Contact"
  • 另一个可能感兴趣的属性是" MessageError"。 这将设置一个错误消息,你可以通过像示例项目中的验证摘要获得。
MessageError="An error has occured at validation of anti-spam code.
 <br/> Pleade check it in again."
  • 标记现在应具有这里外观:
<Captcha:CaptchaControl runat="server" ID="captcha" 
 ValidationGroup="Contact" 
 MessageError="An error has occured at validation of anti-spam code.
 <br/> Pleade check it in again."/>
  • 要做的最后一步是在提交按钮的OnClick 事件中添加一个测试。
protectedvoid SubmitButton_Click(object sender, EventArgs e)
{
 if (Page.IsValid) { //TO DO } }

要求

了解以下内容:

  • ASP.NET 提供的确认策略
  • 网页控件
  • HttpHandler

结束语

HttpHandlers对于我来说是一种全新的逻辑,我选择这种技术主要是为了后台工作而不是构建网页。 可能不是为了这个目的。 可以能是。"。"。但我觉得在做自动化工作时更加逻辑。

CaptchaImage是一个很好的项目,很高兴使用它。

Greetz到


COM  WEB  控制  proj  cap  spa  
相关文章