web做网页的验证码是怎样做的?求一个十分详细的代码+说明。本人是一个刚刚学做网页的菜鸟。现在正在学习做验证码。用myeclipse做的
都有插件的,是通过插件实现的。如果你要去了解它的原理话可以 去找找 OCR(光学字符识别)之类的资料看看 ,tesseract ---http://blog.csdn.net/firehood_/article/details/8433077
可以使用php的gd2图形库结合字符池的随机字符串做出简单的验证码
上面同学说的对 现在实现验证码功能都是用的插件,如果要自己写就是随机生成一串0-9 a-z A-Z的字符串 写入Cookies 或者 Session. 用随机出来的数字或字母来合成图片,主要是合成图片有点麻烦。生成随机生成器,清空图片背景色,画图片的背景噪音线,画图片的前景噪音点,画图片的边框线。。。。
再用image显示图片,再判断用户输入的值是否和Cookis或者Session中一样,可以不用判断大小写,就是把用户和Cookis中都转成大写或者小写。
google 中完整输入下面一行
site:download.csdn.net 你用的语言 验证码生成
回车,就有完整的代码
<%@page language="java"
import="java.awt.*"
import="javax.imageio.ImageIO"
import="java.awt.image.BufferedImage"
import="java.util.*"
pageEncoding="utf-8" %>
<%
request.getParameter("randStr1");
response.setHeader("Cache-Control","no-cache");
//在内存中创建图像
int width=70,height=20;
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
char[] key={'0','a','A'};
//获取画笔
Graphics g=image.getGraphics();
//设定背景色
g.setColor(new Color(255,255,255));
g.fillRect(0,0,width,height);
//取随机产生的验证码(4 位数字)
Random rnd=new Random();
int randNum=rnd.nextInt(8999)+1000,j;
String randStr= "";
String ch="";
//将验证码显示在图像中
for(j=0;j<4;j++){
g.setColor(new Color(20 + rnd.nextInt(110), 20 + rnd.nextInt(110), 20 + rnd.nextInt(110)));
g.setFont(new Font("",Font.PLAIN,20));
switch(rnd.nextInt(3)){
case 0:ch=String.valueOf((char)(key[0]+rnd.nextInt(10)));break;
case 1:ch=String.valueOf((char)(key[1]+rnd.nextInt(26)));break;
case 2:ch=String.valueOf((char)(key[2]+rnd.nextInt(26)));break;
}
randStr+=ch;
g.drawString(ch,10+15*j,18);
}
//将验证码存入session
out.println(randStr);
request.getSession().setAttribute("randStr",randStr);
//随即产生100个干扰点,使图像中的验证码不易被其他程序探测到
for(int i=0;i int x=rnd.nextInt(width);
int y=rnd.nextInt(height);
g.drawOval(x,y,1,1);
}
//输出图像到页面
ImageIO.write(image,"JPEG",response.getOutputStream());
out.clear();
out=pageContext.pushBody();
%>
http://blog.csdn.net/yanggaosheng/article/details/46627973这是博客地址;希望对你有帮助
原理楼上说了。。现在一般都用插件了,初学者的话先会用在研究别的,插件比较方便些