首页验证码生成的例子!·

原创 2011年01月11日 13:57:00

大体步骤:
用镶嵌式网页
生成一张图片
随机生成干扰线
自动生成数字或字母
先将干扰线划到图片上
再将验证字符划到图片上(顺序不能倒)
将自动生成的验证字符保存到session中(以便验证)
输入验证 
============================== 代码 =================================================
<%@ page contentType="image/jpeg" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
        Random random = new Random();
        if(fc>255) fc=255;
        if(bc>255) bc=255;
        int r=fc+random.nextInt(bc-fc);
        int g=fc+random.nextInt(bc-fc);
        int b=fc+random.nextInt(bc-fc);
        return new Color(r,g,b);
        }
%>
<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

// 获取图形上下文
Graphics g = image.getGraphics();

//生成随机类
Random random = new Random();

// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);

//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));

//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
 int x = random.nextInt(width);
 int y = random.nextInt(height);
        int xl = random.nextInt(12);
        int yl = random.nextInt(12);
 g.drawLine(x,y,x+xl,y+yl);
}

// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){
    String rand=String.valueOf(random.nextInt(10));
    sRand+=rand;
    // 将认证码显示到图象中
    g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
    g.drawString(rand,13*i+6,16);
}

// 将认证码存入SESSION
session.setAttribute("wcmsLoginValidateCode",sRand);

// 图象生效
g.dispose();

// 输出图象到页面
OutputStream os = response.getOutputStream();
ImageIO.write(image, "JPEG", os);
os.flush();
os.close();
os=null;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
%>

Struts2生成验证码小例子

Struts2生成验证码小例子 众所周知,验证码在互联网中应用非常之广泛,作用也很明确,防止机器人。下面我将详细讲解如何利用struts2来生成验证码: step1:Ima...
  • u011637069
  • u011637069
  • 2015年11月25日 18:48
  • 232

php生成验证码的例子

php生成验证码的例子,有需要的朋友可以参考下。 -->编辑推荐 与 php 验证码 有关的文章: php 验证码类 php 验证码 php随机验证码 php生成随机验证码(图文) 一个...
  • toplover2
  • toplover2
  • 2013年03月01日 23:14
  • 286

Java生成图片验证码(有点仿QQ验证码的意思)

看了挺多图片验证码的代码,感觉没什么长的好看点的,就自己动手写了个,写完发现跟QQ的有几分相似,比较满意。 功能包括:自定义图片尺寸和字符长度,随机背景颜色和字符颜色,随机字符偏移角度,字符平滑边缘,...
  • ruixue0117
  • ruixue0117
  • 2014年04月02日 23:32
  • 63931

生成验证码的几种方式

1,在jsp页面中直接生成验证码 //image.jsp
  • yhzhaohy
  • yhzhaohy
  • 2016年09月04日 20:06
  • 8124

C#-ASP.NET 自动生成验证码

string code = CreateRandomCode(5); TempData["SecurityCode"] = code; return F...
  • wpg_boke
  • wpg_boke
  • 2016年08月13日 22:50
  • 192

Web---图片验证码生成教程详解-从简单到复杂-从本地到前后台

首先,我们先来看本地如何生成图片验证码的,再来写输出到网页的验证码如何实现。先来看最简单的—实现的功能是,将一个字符串变成图片写入到文件中实现代码:package cn.hncu.img;import...
  • qq_26525215
  • qq_26525215
  • 2016年07月18日 00:13
  • 6795

C#随机生成验证码方法

using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using S...
  • Denghejing
  • Denghejing
  • 2016年07月10日 15:40
  • 3756

C# MVC 生成图片验证码

Controller using System; using System.Collections.Generic; using System.Linq; using System.Web; usin...
  • KingCruel
  • KingCruel
  • 2016年06月17日 11:11
  • 2804

用python生成验证码图片

引入 基本上大家使用每一种网络服务都会遇到验证码,一般是网站为了防止恶意注册、发帖而设置的验证手段。其生成原理是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR)。下面就...
  • Pwiling
  • Pwiling
  • 2016年01月28日 12:11
  • 6847

python代码生成验证码

python代码生成验证码import randomfrom PIL import Image from PIL import ImageDraw from PIL import ImageFilte...
  • qq_33689414
  • qq_33689414
  • 2016年10月20日 19:43
  • 976
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:首页验证码生成的例子!·
举报原因:
原因补充:

(最多只允许输入30个字)