[php validate| 随机生成验证码并验证]

php实现动态随机验证码机制  |  PHP生成各类验证码和Ajax验证php


 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机仍是人的公共全自动程序。
html


captcha.php | validate code generate web

<?php
session_start();
//随机生成验证码的字符串
function random($len) {
    $srcstr="abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
    for($i=0;$i<$len;$i++) {
        @$strs.=$srcstr[mt_rand(0,strlen($srcstr)-1)];
    }
    return ($strs);
}
$str=random(5); //随机生成的字符串
$width=60;  //验证码图片的宽度
$height=25; //验证码图片的高度
//Date in the past
header("Expires:Mon,26 Jul 1997 05:00:00 GMT");
//always modified  标记内容最后修改时间
header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");
//HTTP/1.1 内容过时时间 
header("Cache-Control:no-store,no-cache,must-revalidate");强制不缓存
header("Cache-Control:post-check=0,pre-check=0",false);
//HTTP/1.0
header("Pragma:no-cache");禁止本页被缓存

header("Content-Type:image/png");
 
$im=imagecreate($width,$height);
$back=imagecolorallocate($im,0xFF,0xFF,0xFF);    //背景色
$pix=imagecolorallocate($im,187,190,247);        //模糊点颜色
$font=imagecolorallocate($im,41,163,238);        //字体色
//绘制1000个模糊做用的点
mt_srand();
for($i=0;$i<1000;$i++) {
    imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pix);
}
imagestring($im,5,7,5,$str,$font);//绘制随机生成的字符串
imagerectangle($im,0,0,$width-1,$height-1,$font);//在验证码图像周围绘制1px的边框
imagepng($im);//创建一张PNG格式图形
imagedestroy($im);//将图片handle解构,释于内存空间
$_SESSION["auth_code"]=$str;
?>

index.php | input 缓存

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>captcha</title>
	</head>
	<body>

	</form>
<form action="verify.php" method ="POST">
	<input type = "text" name="verify">
	<img style="cursor:pointer" title="刷新验证码" id="refresh" src='captcha.php'   
onclick="document.getElementById('refresh').src='captcha.php?t='+Math.random()"/> 
	<span style="cursor:pointer;color:red" onclick="document.getElementById('refresh').src='captcha.php?t='+Math.random()">refresh</span>
	
	<button type='submit'>肯定</button>  
	



		
</body>
</html>

verify.php session

<?php  
  header('Content-type:text/html;charset=utf-8');  
  session_start();  

  if (strtoupper($_POST['verify']) != $_SESSION['auth_code']) {  
      echo "<script>alert('验证失败');</script>"; 
  }  
  else {  
    echo "<script>alert('验证成功');</script>";
  }  
  $url = "index.php";  
 
  echo "<script>window.location.href='$url'</script>";  
   
?>
相关文章
相关标签/搜索