ajax/php刷新验证验证码求助
时间:2010-07-19
来源:互联网
<?php
SESSION_START();//开启session
$im=ImageCreate(80,20);//创建图片
$bgclr=ImageColorAllocate($im,255,255,255);//图片背景色
$text_color = ImageColorAllocate ($im, rand(0,255), rand(0,255),rand(0,255));//文字色
for($i=1;$i<=5;$i++){
imagearc($im,rand(0,80),rand(0,20),rand(20,100),rand(0,20),rand(0,360),rand(0,360),$text_color);//干扰码
}
ImageString ($im, 5, rand(0,30), rand(0,5), $_SESSION[recod], $text_color);//验证码写在图片上
header ("Content-type: image/png");
ImagePng ($im);显示图片
function getcode()//获取验证码字符
{
$stc=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9");//
for($i=1;$i<=4;$i++)
{
$b=rand(0,35);
$str.=$stc[$b];
}
return $str;
}
$_SESSION[recod]=getcode();
?>
<html>
<head>
<title>真郁闷呀</title>
</head>
<body>
验证码:<input type="text" size="10" id="recode" onblur="xml();">//当用户输入验证码并输入框失去焦点时调用xml函数,这函数名字乱取的
<img src="./re.php" alt="recode" id="recd">//调入验证码
<input type="button" value="看不清" onclick="myscript();">//当看不清时调用myscript换一张
<div id="noe">请输入验证码</div>//这里用来显示验证码正确与否
<script type="text/javascript">
function myscript()
{
document.getElementById("recd").src="re.php?"+Math.random();//换验证码的函数
}
var xmlHttp;//创建xmlHttp对像
function ajaxFunction()
{
if(window.ActiveXObject)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}else
{
xmlHttp=new XMLHttpRequest();
}
}
function xml()
{
ajaxFunction();//调用上面创建xmlHttp对像函数
xmlHttp.open("GET","now.php?vcode="+document.getElementById("recode").value,true);//向","now.php发送用户输入的验证码;
xmlHttp.onreadystatechange=re;//处理php返回的数据,我这里只有返回,0或者1,1表示验证正确 0表示不正确
xmlHttp.send(null);
}
function re();//处理php返回的数据,我这里只有返回,0或者1,1表示验证正确 0表示不正确
{
var result=xmlHttp.responseText;
if(result==1)
{
document.getElementById("noe").innerHTML="验证码正确";
}
else{
document.getElementById("noe").innerHTML="验证码不正确";
}
}
</script>
</body>
</html>
下面是php的验证页面
now.php
<?php
session_start();
echo $_SESSION[recod];
if($_GET['vcode'])//如果获取到了$_GET['vcode'])的值,那么作比较
{
if($_GET['vcode']==$_SESSION[recod])//如果相等返回1到re函数中否则返回0
{
return 1;
}
else
{
return 0;
}
}
?>
以上代码了详细注释,相信大家都看得懂,但总是得不到正确的验证,当我输入正确的验证码时依然显示验证码不正确;请大家指教,我搞了好多天了,在php100官方群里问了很多,可是没有人愿意分享他们的工作经验;
作者: tfqtuipbsuq 发布时间: 2010-07-19
作者: myy309 发布时间: 2010-07-19
要不你这个$_SESSION[recod]的值是什么???值没保持一致,当然总是不对啦!ECHO看看!!
ImageString ($im, 5, rand(0,30), rand(0,5), $_SESSION[recod], $text_color);//验证码写在图片上
header ("Content-type: image/png");
ImagePng ($im);显示图片
function getcode()//获取验证码字符
{
$stc=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9");//
for($i=1;$i<=4;$i++)
{
$b=rand(0,35);
$str.=$stc[$b];
}
return $str;
}
作者: seashoreboy 发布时间: 2010-07-19

作者: xiaoyaxin 发布时间: 2010-07-20
作者: tfqtuipbsuq 发布时间: 2010-07-20
作者: tfqtuipbsuq 发布时间: 2010-07-20
作者: jetshow 发布时间: 2010-09-07
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28