验证码的生成和使用

1.jsp页面

验证码<input name="checkcode" type="text">
<img src="imageServlet" id="imageCode" alt="验证码" title="验证码">
<a href="javaScript:reLoadCode()">看不清</a><br/>

<script type="text/javascript">
	alert("欢迎登录");
	function reLoadCode(){
	var time = new Date().getTime();
	document.getElementById("imageCode").src="imageServlet?id="+time;
	}
</script>

2.imageServlet用于生成验证码,且把生成的验证码以session形势保存


public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {


		/*1、BufferedImage图像数据缓冲区


		2、Graphics绘制图片


		3、Color获取颜色


		4、Random生成随机数


		5、ImageIo输出图片*/
		BufferedImage bi = new BufferedImage(70, 40, BufferedImage.TYPE_INT_RGB);
		Graphics g = bi.getGraphics();
		Color c = g.getColor();
		g.setColor(Color.yellow);
		g.fillRect(0, 0, 70, 40);
		char[] ch= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".toCharArray();
		Random r = new Random();
		StringBuffer sb = new StringBuffer();
		for(int i=0; i<4; i++) {
			int index = r.nextInt(ch.length);
			Font f = new Font("宋体", Font.BOLD, 40);
			g.setFont(f);
			g.setColor(new Color(r.nextInt(255),r.nextInt(255), r.nextInt(255)));
			g.drawString(ch[index]+"", i*15+3, 28);
			sb.append(ch[index]);
		}
		request.getSession().setAttribute("pop", sb.toString());
		ImageIO.write(bi, "JPG", response.getOutputStream());


	}



3.表单提交到的servlet,负责把验证码从session中得到并与提交的用户填写的验证码比较


String s1 = (String) request.getSession().getAttribute("pop");
		String s2 = request.getParameter("checkcode");

if(true == flag && s1.equalsIgnoreCase(s2)) {
			//if(c.equalsIgnoreCase(parm))
				out.write("success");
		}
		else {
			out.write("error");
		}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Python 中生成和验证验证码的代码示例: ```python import random import string from PIL import Image, ImageDraw, ImageFont # 生成随机的验证码字符串 def generate_code(length=4): chars = string.ascii_letters + string.digits # 字符集 code = ''.join(random.choices(chars, k=length)) # 随机生成验证码 return code # 生成验证码图片 def generate_image(code, size=(120, 50)): image = Image.new('RGB', size, (255, 255, 255)) # 创建图片对象 font = ImageFont.truetype('arial.ttf', 36) # 字体对象 draw = ImageDraw.Draw(image) # 图片绘制对象 # 绘制验证码字符串 for i, c in enumerate(code): x = 20 + i * 30 y = 10 draw.text((x, y), c, font=font, fill=(0, 0, 0)) # 绘制干扰线 for i in range(10): x1 = random.randint(0, size[0]) y1 = random.randint(0, size[1]) x2 = random.randint(0, size[0]) y2 = random.randint(0, size[1]) draw.line((x1, y1, x2, y2), fill=(0, 0, 0)) # 绘制干扰点 for i in range(100): x = random.randint(0, size[0]) y = random.randint(0, size[1]) draw.point((x, y), fill=(0, 0, 0)) return image # 验证验证码 def check_code(code, input_code): return code.lower() == input_code.lower() # 示例代码 if __name__ == '__main__': code = generate_code() # 生成验证码字符串 image = generate_image(code) # 生成验证码图片 image.show() # 显示验证码图片 input_code = input('请输入验证码:') # 用户输入验证码 if check_code(code, input_code): # 验证验证码 print('验证码正确') else: print('验证码错误') ``` 这段代码首先生成一个随机的验证码字符串,然后使用 PIL 库生成一个验证码图片。验证码图片包括验证码字符串、干扰线和干扰点。用户输入验证码后,使用 check_code() 函数验证是否正确。最后,可以根据验证结果给出相应的提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值