网站如何嵌入验证码

最近博客园的改版动作比较大,看到后台管理页面的验证码,提起了我的兴趣。点击显示的验证码,可以进入到一个专门做验证码的网站:http://captcha.com/

其中包含有java、php、.net等,几乎是全平台支持的,还有配套的教程和demo。

文末提供下载下来的java版的文件,里面有jar包,如何使用呢?想快速入手:

一:最简单的文字验证码。使用jsp方式。

在jsp页面引用:

<%@page import="botdetect.web.Captcha"%>
然后在需要验证码的地方加上:
<%
// Adding BotDetect Captcha to the page
Captcha captcha = Captcha.load(request, "exampleCaptcha");
captcha.renderCaptchaMarkup(pageContext.getServletContext(),
    pageContext.getOut());
%>

<input id="captchaCodeTextBox" type="text" name="captchaCodeTextBox" />

检测用户输入的验证码是否正确

<%
if("POST".equalsIgnoreCase(request.getMethod())){
  // validate the Captcha to check we‘re not dealing with a bot
  boolean isHuman = captcha.validate(request,
      request.getParameter("captchaCodeTextBox"));
  if(isHuman){
    // TODO: Captcha validation passed, perform protected action
  } else {
    // TODO: Captcha validation failed, show error message
  }
}
%>

既然引入了第三方jar包,当然少不了在web.xml中配置了。

<servlet-name>BotDetect Captcha</servlet-name>
    <servlet-class>botdetect.web.http.CaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>BotDetect Captcha</servlet-name>
    <url-pattern>/botdetectcaptcha</url-pattern>
</servlet-mapping>  

二:使用SpringMVC方式。

对应的页面:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="botDetect" uri="botDetect"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>BotDetect CAPTCHA Spring MVC Basic Example</title>
    <link rel="stylesheet" href="stylesheet.css" type="text/css"/>
  </head>
  <body>
    <form method="post">
      <h1>BotDetect CAPTCHA Spring MVC Basic Example</h1>
      <fieldset>
        <legend>CAPTCHA Validation</legend>
        <label for="captchaCodeTextBox" class="prompt">
            Retype the code from the picture:</label>
        <!-- Adding BotDetect Captcha to the page -->
        <botDetect:captcha id="basicExampleCaptcha"/>
        <div class="validationDiv">
          <input id="captchaCodeTextBox" type="text"
               name="captchaCodeTextBox"
               value="${basicExample.captchaCodeTextBox}"/>
          <input type="submit" name="submit" value="Submit" />&nbsp;
          <span class="correct">${basicExample.captchaCodeCorrect}</span>
          <span class="incorrect">${basicExample.captchaCodeIncorrect}</span>
        </div>
      </fieldset>
    </form>
  </body>
</html>

页面对应的controller:

package botdetect.examples.springmvc.basic.controller;

import botdetect.examples.springmvc.basic.model.BasicExample;
import botdetect.web.Captcha;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

public class IndexController extends SimpleFormController {
  public IndexController(){
    setCommandClass(BasicExample.class);
  }

  @Override
  protected ModelAndView onSubmit(HttpServletRequest request,
      HttpServletResponse response, Object command, BindException errors){
    BasicExample basicExample = (BasicExample)command;
    // validate the Captcha to check we‘re not dealing with a bot
    Captcha captcha = Captcha.load(request, "basicExampleCaptcha");
    boolean isHuman = captcha.validate(request,
        basicExample.getCaptchaCodeTextBox());
    if (isHuman) {
      basicExample.setCaptchaCodeCorrect("Correct.");
      basicExample.setCaptchaCodeIncorrect("");
    } else {
      basicExample.setCaptchaCodeCorrect("");
      basicExample.setCaptchaCodeIncorrect("Incorrect!");
    }
    basicExample.setCaptchaCodeTextBox("");
    return new ModelAndView("index", "basicExample", basicExample);
  }
}

验证码对应的bean

package botdetect.examples.springmvc.basic.model;

public class BasicExample {
  private String userCaptchaCode, captchaCodeCorrect, captchaCodeIncorrect;

  public String getCaptchaCodeTextBox() {
    return userCaptchaCode;
  }

  public void setCaptchaCodeTextBox(String userCaptchaCode) {
    this.userCaptchaCode = userCaptchaCode;
  }

  public String getCaptchaCodeCorrect() {
    return captchaCodeCorrect;
  }

  public void setCaptchaCodeCorrect(String captchaCodeCorrect) {
    this.captchaCodeCorrect = captchaCodeCorrect;
  }

  public String getCaptchaCodeIncorrect() {
    return captchaCodeIncorrect;
  }

  public void setCaptchaCodeIncorrect(String captchaCodeIncorrect) {
    this.captchaCodeIncorrect = captchaCodeIncorrect;
  }

}

下载验证码文件:

http://captcha.com/botdetect-java-captcha-component-free.zip

时间: 2024-10-13 22:33:23

网站如何嵌入验证码的相关文章

12306网站做得验证码真的好烂

12306网站做得验证码真的好烂,这种产品经理.开发人员都是吃什么长大的啊!都不用脑子想问题吗?直接上图,免得说冤枉它了. 使用一点都不方便.优秀的互联网产品经理啊,救救12306吧! 12306网站做得验证码真的好烂,布布扣,bubuko.com

企业网站/系统嵌入寄快递功能页面方法

应用场景 (1)产品介绍:提供在线预约寄快递功能,并通知快递网点或快递员上门揽件,并实时反向推送揽件前后订单状态信息.物流轨迹变更信息. 一次集成多家主流快递公司下单的功能.(2)调用方式:在系统中集成无需对接快递公司寄快递接口,只需要加载一个js插件,稍加控制即可实现.可直接嵌入到网站或系统中的HTML页面,移动版可嵌入到APP.微信公众号.小程序等移动系统中.(3)适用于:生活类网站.退换货电商业务.公司OA管理.CRM管理等业务.(4)支持快递公司:已支持三通一达(申通不支持).顺丰.EM

在网站中嵌入VideoJs视频播放器

一个博客难免需要引用视频来说明内容,但想要自己来实现一个视频播放器是不是一时半会就能完成的,更重要的是这需要对视频播放技术有一定的了解.于是自然而然的有人会想到开源项目. html5已经原生支持视频元素 而我正在使用地便是video.js.它能够控制基本的播放器样式,支持mp4.webm.ogv视频格式,也能够插入字幕,基本上能够满足常用需求. video.js也使用了html5的特性,如果浏览器不支持html5的话,想要播放视频还得用flash,虽然flash由于资源的消耗广为诟病,但是由于国

IIS网站或系统验证码不显示问题——&quot;使用了托管的处理程序,但是未安装或未完整安装 ASP.NET&quot;

在IIS上发布了一个系统,但是登陆页面的验证码图片一直出不来,尝试了各种办法,权限.路径.继承父类路径等都不管用,进入Login.html,对着无验证码图片的图标,右键复制图片的网址,粘贴到地址栏,出现以下错误: 错误摘要HTTP 错误 500.21 - Internal Server Error处理程序"WebServiceHandlerFactory-Integrated"在其模块列表中有一个错误模块"ManagedPipelineHandler" 详细错误信息

网站注册图形验证码

后台代码: package cn.itcast.shop.user.action; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO; import org.apache

当网站中嵌入视频中,总是弹出迅雷的下载框,或者视频无法播放的情况

最近遇到一个奇葩的问题,在web中嵌入视频要么就是弹出迅雷下载的窗口,要么就是提示:您的视频路径不对或者不支持您的类型,这有一种可能就是装了迅雷.具体的解决办法就是,直接把迅雷中的设置关了就行. 如下图,把其中的勾去掉就行. 如果还是不行的话,有可能就是internet设置的问题.只需要在IE浏览器中更改设置就行.具体如下: IE浏览器选项工具-internet属性-程序-管理加载项-已使用的加载项 在这里面把迅雷的插件关闭 如果想要还是这里打开就可以了

网站登录简单验证码

1 public string BindCode(int length) 2 { 3 string Vchar = "1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z"; 4 5 string[] VcArray = Vchar.Split(new Char[] { ',' }); 8 Random r

ASP.NET MVC实现网站验证码功能

转:http://www.cnblogs.com/liuxiaoji/p/4920382.html 网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录.留言等提交信息到服务器端处理的页面中. 在ASP.NET网站中应用验证码是很容易的,网上有很多的解决方案.最近在做一个OA项目,因系统采用的ASP.NET MVC框架,同样在登录页中需用到验证码,故需将原来在ASP.NET网站中使用的验证码移

C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站

原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章利用了 HttpWebRequest 和 HttpWebResponse 模拟登录了有验证码的网站. 程序设计的界面很简单,三个TextBox分别输入用户名.密码和验证码,一个Image控件显示从网站请求到的验证码图片,还有两个按钮,一个换验证码,一个登录. 写程序前,先用浏览器的开发者工具观察下登