明明输入的是正确的验证码,可是判断的却是错的怎么解决呀我在HTML上的验证码代码是这样的:
验证码: <input size="6" name="yanzhengma" >
<img id="pic" border=1 src="img.jsp?Math.random();" onclick="return chk_image();" alt="30"> img.jsp的代码是这样的:
<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
Color getRandColor(int cc,int bb)
{
Random random = new Random();
if(cc>255) cc=255;
if(bb>255) bb=255;
int r=cc+random.nextInt(bb-cc);
int g=cc+random.nextInt(bb-cc);
int b=cc+random.nextInt(bb-cc);
return new Color(r,g,b);
} //获取随机颜色%>
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
int width=80; //定义验证码图片的长度
int height=30; //定义验证码图片的宽度
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(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int i_x = random.nextInt(width);
int i_y = random.nextInt(height);
int i_xl = random.nextInt(12);
int i_yl = random.nextInt(12);
g.drawLine(i_x,i_y,i_x+i_xl,i_y+i_yl);
} //用线条画背景
String s_Rand="";
for (int i=0;i<4;i++)
{
String rand=String.valueOf(random.nextInt(10));
s_Rand+=rand;
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(rand,13*i+6,16);
} //产生4位随机码
session.setAttribute("rand",s_Rand); //将验证码存入Session中
g.dispose();
ImageIO.write(image, "JPEG", response.getOutputStream()); //输出验证图片
out.clear();
out = pageContext.pushBody();
%>
html上的JavaScript代码是这样的:
<script language="javascript">
<!--
function chk_image()
{
var img = document.getElementById("pic");
img.src = "img.jsp?" + Math.random();
}
function chk()
{
var img = document.getElementById("pic");
//var rand = '<%=session.getAttribute("rand")%>';
if (frm.zhhao.value == "")
{
alert("请填写账号!")
}
else if (frm.pswd.value == "")
{
alert("请填写密码!")
}
else if (frm.pswd2.value == "")
{
alert("请再次填写密码!")
}
else if (frm.pswd.value != frm.pswd2.value)
{
alert("两次输入的密码不一样,请重输!")
}
else if (frm.namnam.value == "")
{
alert("请填写姓名!")
}
else if (frm.eml.value == "")
{
alert("请填写邮箱!")
}
else if (frm.eml.value.indexOf("@") == -1)
{
alert("请输入正确的邮箱地址!")
}
else if (frm.yanzhengma.value == "")
{
alert("请填写验证码!")
return chk_image();
}
else if (frm.yanzhengma.value != img)
{
alert("验证码输入错误,请重输!")
return chk_image();
}
else
{
frm.submit();
}}
-->
</script>这个怎么办啊求助详解方法
验证码: <input size="6" name="yanzhengma" >
<img id="pic" border=1 src="img.jsp?Math.random();" onclick="return chk_image();" alt="30"> img.jsp的代码是这样的:
<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
Color getRandColor(int cc,int bb)
{
Random random = new Random();
if(cc>255) cc=255;
if(bb>255) bb=255;
int r=cc+random.nextInt(bb-cc);
int g=cc+random.nextInt(bb-cc);
int b=cc+random.nextInt(bb-cc);
return new Color(r,g,b);
} //获取随机颜色%>
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
int width=80; //定义验证码图片的长度
int height=30; //定义验证码图片的宽度
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(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int i_x = random.nextInt(width);
int i_y = random.nextInt(height);
int i_xl = random.nextInt(12);
int i_yl = random.nextInt(12);
g.drawLine(i_x,i_y,i_x+i_xl,i_y+i_yl);
} //用线条画背景
String s_Rand="";
for (int i=0;i<4;i++)
{
String rand=String.valueOf(random.nextInt(10));
s_Rand+=rand;
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(rand,13*i+6,16);
} //产生4位随机码
session.setAttribute("rand",s_Rand); //将验证码存入Session中
g.dispose();
ImageIO.write(image, "JPEG", response.getOutputStream()); //输出验证图片
out.clear();
out = pageContext.pushBody();
%>
html上的JavaScript代码是这样的:
<script language="javascript">
<!--
function chk_image()
{
var img = document.getElementById("pic");
img.src = "img.jsp?" + Math.random();
}
function chk()
{
var img = document.getElementById("pic");
//var rand = '<%=session.getAttribute("rand")%>';
if (frm.zhhao.value == "")
{
alert("请填写账号!")
}
else if (frm.pswd.value == "")
{
alert("请填写密码!")
}
else if (frm.pswd2.value == "")
{
alert("请再次填写密码!")
}
else if (frm.pswd.value != frm.pswd2.value)
{
alert("两次输入的密码不一样,请重输!")
}
else if (frm.namnam.value == "")
{
alert("请填写姓名!")
}
else if (frm.eml.value == "")
{
alert("请填写邮箱!")
}
else if (frm.eml.value.indexOf("@") == -1)
{
alert("请输入正确的邮箱地址!")
}
else if (frm.yanzhengma.value == "")
{
alert("请填写验证码!")
return chk_image();
}
else if (frm.yanzhengma.value != img)
{
alert("验证码输入错误,请重输!")
return chk_image();
}
else
{
frm.submit();
}}
-->
</script>这个怎么办啊求助详解方法
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货