冒险岛登录要验证码码

验证码的生成,实现两种不同的登录,1.每一次登录都需要输入验证码2.输错两次后需要输入 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 9时,
验证码的生成,实现两种不同的登录,1.每一次登录都需要输入验证码2.输错两次后需要输入
代码片段(2)
VipLogin.java&~&9KB&&&&
这是实现验证码的servlet
import java.awt.C
import java.awt.F
import java.awt.G
import java.awt.image.BufferedI
import java.io.IOE
import java.io.PrintW
import javax.imageio.ImageIO;
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpS
public class CodeImageServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");//输出的文本格式为jpg
BufferedImage image=new BufferedImage(100, 30, BufferedImage.TYPE_INT_RGB);//BufferedImage他是一个类
Graphics g=image.getGraphics();//绘图工具
g.setColor(Color.white);
g.fillRect(0, 0, 100, 30);
String[] keys = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "h", "C", "D", "E", "F", "我", "好" };
String[] fonts = { "新宋体", "微软雅黑" };
int[] sizes = { 18, 19, 20, 21, 22, 23, 24 };
int[] sys = { 0, Font.BOLD, Font.ITALIC, Font.BOLD + Font.ITALIC };
String code = "";
for(int i=0;i&4;i++){
String c = keys[(int) (Math.random() * keys.length)];
String font=fonts[(int)(Math.random()*fonts.length)];
int size=sizes[(int)(Math.random()*sizes.length)];
int sty=sys[(int)(Math.random()*sys.length)];
int r1=(int)Math.random()*190;
int g1=(int)Math.random()*190;
int b1=(int)Math.random()*190;
Color color=new Color(r1, g1, b1);
g.setFont(new Font(font, sty, size));
g.setColor(color);
g.drawString(c, 5+(i*24), 28);
HttpSession session=request.getSession();
session.setAttribute("code", code);
ImageIO.write(image, "jpeg", response.getOutputStream());
第一种登陆方法:(每次都要输入验证码)
import java.io.IOE
import java.io.PrintW
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpS
public class LonginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/charset=gbk");
PrintWriter out = response.getWriter();
String username=request.getParameter("username");
String password=request.getParameter("password");
String code=request.getParameter("code");
String url="";
if(username==null||username.trim().equalsIgnoreCase("")||
password==null||password.trim().equalsIgnoreCase("")||code==null||code.trim().equalsIgnoreCase("")){
url="index.jsp";
HttpSession session=request.getSession();
Object obj=session.getAttribute("code");
if(obj==null){
url="index.jsp";
if(obj.equals(new String(code.trim().getBytes("iso-8859-1"),"GBK"))){
if(username.equals("lisi")&&password.equals("123")){
session.setAttribute("username", username);
url="hyservlet";
url="index.jsp";
url="index.jsp";
response.sendRedirect(url);
第二种:(只有当输错两次的时候才会要求输入验证码)
import java.io.IOE
import java.io.PrintW
import java.util.H
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpS
public class LoginServlet1 extends HttpServlet {
private Hashtable table = new Hashtable();
public void put(String ip) {//写一个put方法,这是把获得远程的ip访问写入table中
Object obj1 = table.get(ip);
Integer i = 0;
if (obj1 != null) {
i = Integer.parseInt(obj1.toString());//把获得的ip地址转换为int输出
table.put(ip, ++i);
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean flag =
Object obj1 = table.get(request.getRemoteAddr());//request.getRemoteAddr()相当于ip
if (obj1 == null) {
int count = Integer.parseInt(obj1.toString());
if (count & 2) {
String username = request.getParameter("username");
String password = request.getParameter("password");
String code = request.getParameter("code");
String url = "";
if (username == null || username.trim().equalsIgnoreCase("")
|| password == null || password.trim().equalsIgnoreCase("")) {
url = "index.jsp";
put(request.getRemoteAddr());
boolean state =
if (flag == false) {
if (code == null || code.trim().equalsIgnoreCase("")) {
url = "index.jsp";
put(request.getRemoteAddr());
HttpSession session = request.getSession();
Object obj = session.getAttribute("code");
if (obj == null) {
url = "index.jsp";
put(request.getRemoteAddr());
if (obj.equals(new String(code.trim().getBytes(
"iso-8859-1"), "GBK"))) {
url = "index.jsp";
put(request.getRemoteAddr());
if (state) {
HttpSession session = request.getSession();
if (username.equals("lisi") && password.equals("123")) {
session.setAttribute("username", username);
url = "hyservlet";
url = "index.jsp";
put(request.getRemoteAddr());
response.sendRedirect(url);
简单的登陆页面:(要实现上面两种切换方法,可以在表单中修改action=“”)
&%@ page language="java" import="java.util.*" pageEncoding="GBK"%&
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
&base href="&%=basePath%&"&
&title&登陆界面&/title&
&meta http-equiv="pragma" content="no-cache"&
&meta http-equiv="cache-control" content="no-cache"&
&meta http-equiv="expires" content="0"&
&meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
&meta http-equiv="description" content="This is my page"&
&link rel="stylesheet" type="text/css" href="styles.css"&
&form action="login1" method="post"&
username::&input type="text" name="username"&&br/&
password::&input type="text" name="password"&&br/&
code::&input type="text" name="code" &&img src="codeservlet"&&br/&
&input type="submit" value="Login"&
一下是webxml里面的内容(这个没用,只是参考)
&?xml version="1.0" encoding="UTF-8"?&
&web-app version="2.5"
xmlns="/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd"&
&servlet-name&LonginServlet&/servlet-name&
&servlet-class&com.LonginServlet&/servlet-class&
&/servlet&
&servlet-name&HYServlet&/servlet-name&
&servlet-class&com.HYServlet&/servlet-class&
&/servlet&
&servlet-name&CodeImageServlet&/servlet-name&
&servlet-class&com.CodeImageServlet&/servlet-class&
&/servlet&
&servlet-name&LoginServlet&/servlet-name&
&servlet-class&com.LoginServlet&/servlet-class&
&/servlet&
&servlet-name&LoginServlet1&/servlet-name&
&servlet-class&com.LoginServlet1&/servlet-class&
&/servlet&
&servlet-mapping&
&servlet-name&LonginServlet&/servlet-name&
&url-pattern&/login&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&HYServlet&/servlet-name&
&url-pattern&/hyservlet&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&CodeImageServlet&/servlet-name&
&url-pattern&/codeservlet&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&LoginServlet&/servlet-name&
&url-pattern&/Login&/url-pattern&
&/servlet-mapping&
&servlet-mapping&
&servlet-name&LoginServlet1&/servlet-name&
&url-pattern&/login1&/url-pattern&
&/servlet-mapping&
&welcome-file-list&
&welcome-file&index.jsp&/welcome-file&
&/welcome-file-list&
&/web-app&
2.&[图片] 123.png&&&&
开源中国-程序员在线工具:
相关的代码(1489)
验证码一直显示吗?& 验证码开始不显示,输入两次错误才显示出来要求输入验证码更合理些
2楼:我是it爱好者 发表于
引用来自“戴星”的评论 验证码一直显示吗?& 验证码开始不显示,输入两次错误才显示出来要求输入验证码更合理些 这个我倒没注意,不过在登录界面中添加script就可以解决了
3楼:linapex 发表于
新手练习用的吧。
4楼:我是it爱好者 发表于
引用来自“linapex”的评论新手练习用的吧。我就是新手,大神庇佑
5楼:linapex 发表于
代码可优化地方太多了。建议重构,如,获取ip方法重构,多重判断重构等等.
6楼:蔡小峰 发表于
存储位置呢? 问下怎样判断一个账号是第几次登录?
我看你是放到 Hash表里面,这个hash表的数据如何持久?
7楼:我是it爱好者 发表于
引用来自“蔡小峰”的评论存储位置呢? 问下怎样判断一个账号是第几次登录?
我看你是放到 Hash表里面,这个hash表的数据如何持久?if (count & 2) { flag = } 这是判断条件
8楼:base_ 发表于
只用了你第一个登录的Servlet,不过有点问题啊
先说JSP:你的图片是加载Servlet的显示的把,我不知道你这样加载的时候图片有没有显示,反正我是没有,LZ可以试试
&form action=&${pageContext.request.contextPath }/LoginServlet& method=&post&&
& & username: &input type=&text& name=&username& /&&br /&
& & password: &input type=&text& name=&password&&&br/&
& & code: &&input type=&text& name=&code& &&img src=&${pageContext.request.contextPath }/ImageCode&&&br/&
& & & &&input type=&submit& value=&Login&&
& & &/form&
这样比较好
第二个就是:每次在输入验证码你会把username加入到session中,我看你跳转的是
url =&&hyservlet&; 一个Servlet,我不知道你这个Servlet中写了什么,不过我是直接将session的username&清空,不然在登录的第2次的时候程序登录不成功
开源从代码分享开始
我是it爱好者的其它代码热门关键字:无法 登录升级 VIP
常见问题分类
为什么登录的时候突然需要输入登录验证码?
&&&&&& 如果您发现正确的帐号和密码登录却提示输入登录验证码,是因为您的帐号存在安全隐患,您的密码可能已经泄漏,为了保障您的帐号安全,请您登录后尽快修改密码,给您带来的不便,请您谅解。
目前有三种情况需要输入验证码:
&&&&&& 1、系统检测到您的帐号最近在异地登录过。
&&&&&& 2、系统检测到您的帐号最近登录太过于频繁。
&&&&&& 3、系统检测到您的帐号被恶意登录过,分为两种情形:一种是您所在的网络有人在进行非法的登录活动;另一种是您的帐号和密码已经泄露,被人用来批量登录过。
您对以上帮助信息感到:
感谢您的反馈,我们已记录,有您的支持我们会做的更好!谢谢!
您是否也想知道:经验990 米
在线时间248 小时
版本V7.1.1.0.LXACNCK
积分 1302, 距离下一级还需 698 积分
积分 1302, 距离下一级还需 698 积分
机型小米手机2/2S
签到次数65
MIUI版本V7.1.1.0.LXACNCK
手机都丢了还能收验证码吗?手机没在身边想看短信联系人情况下如何收验证码?多么雷人的验证码?????
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
经验28191 米
威望146 米
在线时间2675 小时
版本5.11.29
我每天早上都是被自己帅醒的
机型三星S4 L720
签到次数128
MIUI版本5.11.29
手机丢了就去补个卡,然后就能了!!
如果不短信验证,所有拿到你帐号的人都能看你的云端内容了
看到仿苹果主题就想吐……
经验1653 米
在线时间42 小时
版本4.12.5
积分 1680, 距离下一级还需 320 积分
积分 1680, 距离下一级还需 320 积分
机型小米手机1/1S
签到次数151
MIUI版本4.12.5
手机丢了就去补个卡,然后就能了!!
如果不短信验证,所有拿到你帐号的人都能看你的云端内容了 ...
手机都丢了或者忘到哪里了补卡起步字段网路 坑爹功能 至少让人选择是否开启验证 或者查找手机和数据查看功能分开&&
经验28191 米
威望146 米
在线时间2675 小时
版本5.11.29
我每天早上都是被自己帅醒的
机型三星S4 L720
签到次数128
MIUI版本5.11.29
手机都丢了或者忘到哪里了补卡起步字段网路 坑爹功能 至少让人选择是否开启验证 或者查找手机和数据查看 ...
我从来不用备份功能,所以还好吧
看到仿苹果主题就想吐……
经验990 米
在线时间248 小时
版本V7.1.1.0.LXACNCK
积分 1302, 距离下一级还需 698 积分
积分 1302, 距离下一级还需 698 积分
机型小米手机2/2S
签到次数65
MIUI版本V7.1.1.0.LXACNCK
手机丢了就去补个卡,然后就能了!!
如果不短信验证,所有拿到你帐号的人都能看你的云端内容了 ...
那还怎么查找手机呢?往手机上发定位短信
经验28191 米
威望146 米
在线时间2675 小时
版本5.11.29
我每天早上都是被自己帅醒的
机型三星S4 L720
签到次数128
MIUI版本5.11.29
那还怎么查找手机呢?往手机上发定位短信
不是基于硬件的手机找回本来就不靠谱!!!
看到仿苹果主题就想吐……
经验1331 米
在线时间9 小时
版本6.6.17
积分 1334, 距离下一级还需 666 积分
积分 1334, 距离下一级还需 666 积分
机型红米Note 2
签到次数130
MIUI版本6.6.17
手机丢了就去补个卡,然后就能了!!
如果不短信验证,所有拿到你帐号的人都能看你的云端内容了 ...
你又想过手机丢失了,查找手机,短信怎么弄?现在营业厅都是补卡都是身份证,屌丝们不是自己身份证他们会给你不办?SB吧?雷军也够雷人的!4G手机都不出!还打算怎么玩?
经验28191 米
威望146 米
在线时间2675 小时
版本5.11.29
我每天早上都是被自己帅醒的
机型三星S4 L720
签到次数128
MIUI版本5.11.29
你又想过手机丢失了,查找手机,短信怎么弄?现在营业厅都是补卡都是身份证,屌丝们不是自己身份证他们会 ...
骂人果然能显示你的专业和高大上!我只能膜拜和默默滚蛋!过于纠缠怕你骂的更凶!!
看到仿苹果主题就想吐……
MIUI 3000万
MIUI 3000万发烧友纪念勋章
MIUI 2000万
MIUI 2000万发烧友纪念勋章
1000万用户纪念勋章
MIUI1000万用户纪念勋章
MIUI三周年
MIUI三周年纪念勋章
已关注微信
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI 100周
100周发布纪念勋章
Copyright (C) 2016 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号为什么QQ登录时需要输入验证码 - 为什么QQ登录,您需要输入验证码
| 为什么QQ登录时需要输入验证码
为什么QQ登录,您需要输入验证码
用户:chenjun538
为什么QQ登录时需要输入验证码为什么QQ登录,您需要输入验证码
最佳答案用户:o_o1233211,你可以使用一些非官方的软件登陆QQ,或者挂在网站上的QQ。2,在一些不安全的地方登陆Q,存在不安全因素的网吧。3,您的计算机木马病毒目前的缘故,例如,你发送一些病毒在病毒邮件或欺骗性的消息,这是由于一个病毒的缘故。4,恶意QQ发送的消息,据报道,被迫删除了一大批朋友。5,也请不要在数一次登录时的密码登录其他地方的朋友来试试你的QQ。6 期,有可能造成的,因为网络问题,如与代理,网络是不稳定的,都发生。解决方案:使用杀毒软件在安全模式全部杀死你的电脑,我们建议你设置这个号码的本地聊天记录,可以删除(在QQ安装目录下搜索到的号码命名的文件夹删除就可以!)之间,请卸载所有以前版本的QQ,QQ下载最新的官方版本。有一个QQ号报道,请耐心等待通过观察时间,其他时间关闭,验证码将消失,但的需要重新喜欢经营上述看看。关于用户号码存在双主号被要求输入验证码解决方案,发现近期存在大量的双主号(也就是说,他们都知道的密码数量在不同的时间在不同的地方),原来的所有者号码可以不容易被发现,所以我们推出了验证码造成真正的号码的主人的关注,减少原主人的损失。我希望大家共同努力,加强对数字的认识,共同创造一个绿色健康的网络环境。下面列举具体的原因及解决办法:具体原因:一,发送广告消息:在您不知情的情况下,可能被他人利用发送广告消息或欺诈行为,这是由系统检测。2,远程登录,您的号码经常在一个地方降落,突然有变化时检测到登陆网站,将被添加的安全验证码3,号码有挂机行为:通常盗号者会使用,以帮助实现窃取用户挂机用户财产和数量。解决方案:1,发现验证码后立即更改密码,并查杀木马2,你会被要求输入验证码的观察期,正常10?20天,系统将自动取消,在此期间,如果密码再次泄漏,将继续被要求输入验证码。其它答案用户:hjb其中,腾讯QQ曾经怀疑被盗或其他原因,如大量的缺失朋友的原因,如需要验证并激活,请联系腾讯。第二 ,是较为常见的原因是,你在一定的时间,你登录QQ,设置一个密码来保护当地新闻。您可以取消它,在你登陆QQ之前,进入QQ密码输入的密码不紧急着陆点,并单击“高级设置”,去选择登陆方式。第三,腾讯一直在管理软件挂Q。您可以联系腾讯客户服务热线,566 服务电子邮箱: 四,QQ号码文件夹(C:\ Program Files文件\腾讯\ QQ \你的电话号码),删除(记得要备份聊天记录和图像),然后使用重新登陆。(最常用的方法)其它答案用户:n0thk这说明你的QQ在别处登陆,10天之后再次更改密码,也没有其它答案用户:玫瑰薄荷QQ验证码登陆系统有时需要一些时间很快熟练的机器其它答案用户:crborg战略推出一个验证码来保护您的权利,为了防止黑客的恶意软件扫描您的密码来登录。但很多人不明白这一点。感觉这样的问题的严重性,增加了一些人问:你需要输入验证码,推导出了一些问题。我们为什么要讨论这个验证码呢?在调查中发现,很多朋友一般都是两个QQQ或两个或更多,但并不是因为他们必须进入这些QQ,但唯一一家只。导致这样的结果是显而易见的,我将这些法规类,原因如下:1,你可以使用一些非官方的软件登陆QQ,或者挂在该网站上QQ。2,在一些不安全的地方登陆Q,有不安全的咖啡馆。3,您的计算机木马病毒中存在的缘故,例如,你发送一些病毒在病毒邮件,或欺骗性的消息,这是由于一个病毒的缘故。4,恶意发送QQ消息,据报道,被迫删除了大量的朋友。5,也请不要期间登录时的密码登录其他地方的朋友来试试你的QQ号码。6,有可能会导致由于网络问题,如与代理人,网络是不稳定的,都发生。解决方案:使用杀毒软件在安全模式全部杀死你的电脑,我们建议你设置这个号码的本地聊天记录,可以删除(在QQ安装目录下搜索到的号码命名的文件夹删除就可以!)之间,请卸载所有以前版本的QQ,QQ下载最新的官方版本。有一个QQ号报道,请耐心等待通过观察时间,其他时间关闭,验证码将消失,但的需要重新喜欢经营上述看看。关于用户号码存在双主号被要求输入验证码解决方案,发现近期存在大量的双主号(也就是说,他们都知道的密码数量在不同的时间在不同的地方),原来的所有者号码可以不容易被发现,所以我们推出了验证码造成真正的号码的主人的关注,减少原主人的损失。我希望大家共同努力,加强对数字的认识,共同创造一个绿色健康的网络环境。下面列举具体的原因及解决办法:具体原因:一,发送广告消息:在您不知情的情况下,可能被他人利用发送广告消息或欺诈行为,这是由系统检测。2,远程登录,您的号码经常在一个地方降落,突然有变化时检测到登陆网站,将被添加的安全验证码3,号码有挂机行为:通常盗号者会使用,以帮助实现窃取用户挂机用户财产和数量。解决方案:1,发现验证码后立即更改密码,并查杀木马2,你会被要求输入验证码的观察期,正常10?20天,系统将自动取消,在此期间,如果密码再次泄漏,将继续被要求输入验证码。其它答案用户:911online0351有漏洞,更改密码...
& 2012 - 2016

我要回帖

更多关于 微信登录一直要验证码 的文章

 

随机推荐