+ -
当前位置:首页 → 问答吧 → ajax/php刷新验证验证码求助

ajax/php刷新验证验证码求助

时间:2010-07-19

来源:互联网

re.php这是生成验证码的文件 大家都很看懂
<?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]=getcode(); //写在前面这里来
要不你这个$_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

楼主给我个源码呗?我的邮箱[email protected]

作者: jetshow   发布时间: 2010-09-07

相关阅读 更多