`
duanfei
  • 浏览: 734023 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

页面验证码

    博客分类:
  • J2EE
阅读更多
<tr>
 <td  align="right">验证码:</td>
 <td>
 <table style="margin:0px" border="0" cellpadding="0" cellspacing="0">
  <tr>
   <td>
     <input type="text" id="confirmcode" onkeydown="go_der(this);" style="width:40px;" maxlength="4" name="confirmcode"  onfocus="document.getElementById('confimg').style.visibility='visible';document.getElementById('reflushid').style.visibility='visible'" /></td>
   <td valign="bottom" id="confimg" style="padding-left:10px;padding-right:10px;visibility:hidden" align="right">	<script>document.write("<img height='20' style='margin:1px'  src='<%=request.getContextPath()%>/servlet/ConfirmCodeImgServlet'>")</script></td>
   <td align="left"  id="reflushid"   style="visibility:hidden">
	<a href="#" onclick="changeImg()" style="CURSOR: hand;COLOR:Blue;  TEXT-DECORATION: none;TEXT-DECORATION: underline">看不清</a></td>
    </tr>
   </table>
  </td>
</tr>
<tr>
 <td colspan="2">
  <!--  input type="button" style="cursor:hand" class="Btn2" id="login"  onclick="check_data()">-->
   <table align="center"><tr><td>
   <table border="0" cellpadding="0" cellspacing="0" >
     <tr>
      <td >
       <img src="<%=request.getContextPath()%>/img/spacer.png" width="4" height="22" /></td>
      <td >
       <input  type="button" id="login" class="Btn2" value="登录" onclick="check_data()"/></td>
       <td>
         <img src="<%=request.getContextPath()%>/img/spacer.png" width="4" height="22" /></td>
      </tr>
    </table>
   </td>
    <td><input type="button" value="取消" class="Btn2" onClick="window.close();">
<!-- img onClick="window.close();"   src="<%=request.getContextPath()%>/img/quxiao.jpg" /> -->
</td></tr></table></td></tr>

<script type="text/javascript">
function  changeImg()
       {
        var img = document.getElementById("confimg");
        document.getElementById("confirmcode").value="";
        img.innerHTML="<img height='20' style='margin:1px' src='<%=request.getContextPath()%>/servlet/ConfirmCodeImgServlet'>";
      }
function check_data()
	{
	    /*
	    if(!englishandnumberonly(document.loginForm.username))
	    {
	    document.loginForm.username.focus();
	    alert("登录名只能是英文、数字和下划线!");
     	return false;
     	}
     	*/
     	
	    if(!isnumberonly(document.loginForm.confirmcode))
	    {
	    document.loginForm.confirmcode.focus();
	    alert("验证码只能是数字!");
     	return false;
     	}else{
     	if(document.loginForm.confirmcode.value.length!=4){
     	document.loginForm.confirmcode.focus();
	    alert("验证码必须为四位有效数字!");
     	return false;
     	}
     	}
     
		var username=document.loginForm.username.value;
        var password=document.loginForm.password.value;
        var confirmcode=document.loginForm.confirmcode.value;
        if((username=="")||(password=="")||(confirmcode==""))
        {
            alert("用户名、密码及验证码都不能为空!");
            document.loginForm.username.focus();
            return false;
         }else{
         if(window.name!="<%=ActionGlobalDefine.mainframe%>"){
	        window.opener = null;
	        window.open("",'<%=ActionGlobalDefine.mainframe%>','height=730,width=1020,top=0,left=0,toolbar=no,menubar=no,scrollbars=yes, resizable=no,location=no, status=yes');
            window.open("<%=request.getContextPath()%>/login.jsp",'_self','height=730,width=1020,top=0,left=0,toolbar=no,menubar=no,scrollbars=yes, resizable=no,location=no, status=yes');
            window.close();
               }
                document.loginForm.password.value=hex_md5(password);
     	        document.loginForm.submit();
     	  }
    }
</script>

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lct.trans.dao.MyLog;

public class ConfirmCodeImgServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 
	 */

	public void init() throws ServletException {
		System.out
				.println("*****  confirmCodeImageServlet  init  is  ok  !!! ******");
	}

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

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		MyLog.getlog().info("****   confirmcodeImage   doget  ");
		int iWidth = 55, iHeight = 18;
		BufferedImage image = new BufferedImage(iWidth, iHeight,
				BufferedImage.TYPE_INT_RGB);
		Graphics g = image.getGraphics();
		g.setColor(Color.white);
		g.fillRect(0, 0, iWidth, iHeight);
		g.setColor(Color.black);
		g.drawRect(0, 0, iWidth - 1, iHeight - 1);
		String rand = new Integer((int) (Math.random() * 10000)).toString();
		switch (rand.length()) {
		case 1:
			rand = "000" + rand;
			break;
		case 2:
			rand = "00" + rand;
			break;
		case 3:
			rand = "0" + rand;
			break;
		default:
			rand = rand.substring(0, 4);
			break;
		}
		request.getSession().setAttribute("realcode", rand);
		g.setColor(Color.black);
		g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
		g.drawString(rand, 10, 15);
		Random random = new Random();
		for (int iIndex = 0; iIndex < 88; iIndex++) {
			int x = random.nextInt(iWidth);
			int y = random.nextInt(iHeight);
			g.drawLine(x, y, x, y);
		}
		g.dispose();
		ImageIO.write(image, "JPEG", response.getOutputStream());
	}

}




另一种页面验证
在web.xml
 <servlet>
  <description>登陆图片验证</description>
  <servlet-name>authimg</servlet-name>
  <servlet-class>com...servlet.AuthImg</servlet-class>
 </servlet>

 <servlet-mapping>
  <servlet-name>authimg</servlet-name>
  <url-pattern>/authimg.gif</url-pattern>
 </servlet-mapping>


import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

import com.sun.image.codec.jpeg.*;
import java.awt.*;
import java.awt.image.*;
import org.apache.commons.lang.*;
//import org.springframework.web.context.WebApplicationContext;
//import org.springframework.web.context.support.WebApplicationContextUtils;

public class AuthImg extends HttpServlet {
	/**
	 *
	 */
	private static final long serialVersionUID = -7099312208878086233L;

	//private static final String CONTENT_TYPE = "text/html; charset=UTF-8";

	private Font mFont = new Font("Times New Roman", Font.BOLD, 20);

	// Initialize global variables
	public void init() throws ServletException {
	}

	// Process the HTTP Get request
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("image/jpeg");
		ServletOutputStream out = response.getOutputStream();

		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(250, 255));
		g.fillRect(0, 0, width, height);

		g.setFont(mFont);

		g.setColor(getRandColor(240, 250));
		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);
		}

		String rand = RandomStringUtils.randomNumeric(4);
		char c;
		for (int i = 0; i < 4; i++) {
			c = rand.charAt(i);
			g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110))); // 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
			g.drawString(String.valueOf(c), 13 * i + 6, 16);
		}

        //放入Session,解决Cookie出错的问题
        HttpSession seesion = request.getSession();
		seesion.setAttribute("authCode", rand);

//		WebApplicationContext wc = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
//		SysConfig sysConfig = (SysConfig) wc.getBean("sysConfig");
//		UserCookie uc = new UserCookie(request, response, sysConfig);
//		uc.addAuthCode(rand);

		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
		encoder.encode(image);
		out.close();
	}

	// Process the HTTP Post request
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

	// Clean up resources
	public void destroy() {
	}

	private 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);
	}

}

<%
String path = request.getContextPath();
%>

<tr>
                <td height="24" valign="bottom"><div align="right"><span class="STYLE3">验证码</span></div></td>
                <td width="10" valign="bottom">&nbsp;</td>
                <td width="52" height="24" valign="bottom"><input type="text" name="loginForm.authcode" id="authcode" size="5" maxlength="4" onfocus="javascript:showimage();" style="width:50px; height:17px; background-color:#87adbf; border:solid 1px #153966; font-size:12px; color:#283439; "></td>
                <td width="62" valign="bottom"><div align="left"><img id="auimg" style="cursor:pointer;display: none" onclick="javascript:loadimage();" width="38" height="17"></div></td>
              </tr>


function loadimage(){
        document.getElementById("auimg").src="<%=path%>/authimg.gif?"+Math.random();
    }
    function showimage(){
    	var _auimg = document.getElementById("auimg");
    	if(_auimg.style.display == 'none'){
    		_auimg.src="<%=path%>/authimg.gif?"+Math.random();
    		_auimg.style.display = '';
    	}
    }
分享到:
评论

相关推荐

    ASP.NET页面验证码控件,方便快捷使用(附使用说明)

    ASP.NET页面验证码控件是网站安全验证的一种常见方式,它用于防止自动化的恶意程序或机器人进行非法操作,如批量注册、频繁登录尝试等。在ASP.NET框架中,我们可以使用自定义或者内置的验证码控件来实现这一功能。...

    JAVA实现注册页面验证码刷新

    "JAVA实现注册页面验证码刷新"的课题旨在探讨如何在Java后端生成并更新前端显示的验证码,确保每次用户请求时都能显示新的、随机生成的验证码。下面将详细介绍这个过程涉及的关键知识点。 1. **验证码的生成**: -...

    jsp 登陆页面验证码的实现

    在网页开发中,验证码是一种常见的安全机制,用于防止恶意自动化的机器人或爬虫进行非法操作,比如批量注册、登录等。...通过这些步骤,我们可以实现一个基本的登录页面验证码功能,有效提高了系统安全性。

    jsp页面验证码(完整实例MyEclipse)

    **JSP页面验证码详解——基于MyEclipse的完整实例** 验证码在网络安全中扮演着至关重要的角色,它能有效防止自动化的机器人程序(如恶意爬虫)进行非法操作,如批量注册、恶意登录等。在本教程中,我们将深入探讨...

    页面验证码生成器

    本项目“页面验证码生成器”提供了一种自定义化的解决方案,允许开发者根据需求调整验证码的字符集、长度、图像尺寸以及干扰纹样式。 在Java中实现验证码生成,通常涉及到以下几个核心知识点: 1. **随机数生成**...

    C#获取页面验证码图片.zip

    在本项目“C#获取页面验证码图片.zip”中,我们将探讨如何使用C#编程语言从Web页面中获取验证码图片。 首先,我们需要了解Web页面中的验证码通常是如何工作的。验证码通常由服务器生成,它是一张包含随机文本或数字...

    jsp实现注册页面验证码验证代码

    Description: 该文章讲述了如何使用 JSP 实现注册页面验证码验证代码,代码使用请有基础 JSP 基础,知道将代码添加到哪里,文章中已做详细阐述。 Tag: JSP、验证码、代码、表单验证 Knowledge Points: 1. JSP ...

    C#页面验证码样例

    本示例以"C#页面验证码样例"为主题,旨在介绍如何在C#环境下生成和验证网页上的验证码。下面将详细阐述相关知识点。 首先,我们来看`getcode.aspx`页面,这通常是一个负责生成验证码图像的页面。在C#中,我们可以...

    jsp页面验证码实现

    通过以上步骤,我们可以实现一个简单的JSP页面验证码功能。在实际应用中,还可以考虑使用更复杂的验证码库,如Google的reCAPTCHA,或者使用基于数学问题、滑动拼图等形式的验证码,以提高安全性并降低用户体验的负面...

    google扩展程序实现登陆页面验证码识别

    google扩展程序利用tesseract实现登陆页面验证码识别。google扩展程序页面,开发者模式下,加载已解压的扩展程序,打开带有验证码的网站,验证码框即自动填写。 问题:识别速度较慢1-3秒,但是同一页面的第二次识别...

    登陆页面验证码 代码

    这是一页面的登陆代码, 做为一个登陆页面,通过这些代码可以直接进入

    JSP页面验证码生成图片

    ### JSP页面验证码生成图片详解 #### 一、概述 在网站登录或注册过程中,为了防止恶意登录或机器人操作,通常会使用验证码机制。本文档详细介绍了一种利用JSP技术生成验证码图片的方法。该方法通过Java后端动态...

    jsp页面验证码生成

    这是一个关于jsp页面验证码生成,可以生成页面的验证码,可以检验验证码是否正确

    Jsp生成页面验证码的方法

    下面将详细介绍如何使用JSP生成页面验证码的方法。 首先,创建一个名为`image.jsp`的JSP文件,这个文件的主要任务是生成随机的验证码图片。在代码中,我们看到以下几个关键步骤: 1. **设置页面类型**:由于我们...

    \shopex模板+插件\ShopEx登录注册等页面验证码不显示问题终极解决

    ShopEx是中国一款知名的电子商务平台...通过以上步骤,一般能够解决ShopEx登录注册页面验证码不显示的问题。记住,每个步骤都需要耐心和细心,因为问题可能出在多个环节。对于技术小白来说,寻求专业帮助是明智的选择。

    HTML页面验证码生成方法(四位字幕)

    HTML页面验证码生成方法(四位字幕) 可用于登录、编辑资料等页面验证

    jsp页面验证码

    总结起来,Java Web项目中实现JSP页面的验证码功能,主要涉及以下几个关键技术点: 1. 使用Java生成随机字符串。 2. 图形化验证码并处理图像效果。 3. 使用HTTP session存储验证码。 4. 创建Servlet来处理验证码图像...

    系统登录页面验证码工具类

    系统登录页面验证码工具类,随机生成数字+字母的图片 可以修改生成的数量和清晰度

    页面验证码例子

    在IT行业中,页面验证码是一种广泛应用于网站安全性的重要技术,它主要用于防止自动化的机器人或恶意脚本进行非法操作,如批量注册、刷票等。验证码的主要目的是确保操作是由真实的人完成的,而不是由计算机程序。本...

    JavaScript实现页面动态验证码

    在本主题中,我们将深入探讨如何使用JavaScript实现一个页面动态验证码。验证码的主要目的是防止自动化的机器人程序对网站进行恶意操作,例如批量注册、垃圾评论等。 验证码通常包括一些随机生成的字符或数字,用户...

Global site tag (gtag.js) - Google Analytics