php随机生成图片验证码方法详解

发布时间:2019-08-05编辑:脚本学堂
本文介绍了php随机生成验证码图片的方法,二个php随机验证码的生成实例,有需要的朋友参考下。

利用php可以随机生成验证码,用php随机生成一定长度的字符串,然后利用php函数绘制一张背景含有干扰噪声的图片,图片的文字内容为先前生成的字符串。

专题推荐:php验证码大全

例1,php生成随机验证码
 

复制代码 代码示例:
<?php
session_start();
//随机生成验证码的字符串
function random($len) {
  $srcstr="ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
  mt_srand();
  $strs="";
  for($i=0;$i<$len;$i++) {
    $strs.=$srcstr[mt_rand(0,33)];
 }
 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;
?>

例2,php随机验证码
php生成简单的验证码
 

复制代码 代码示例:
<?php
  $image_width=140;
  $image_height=50;
  srand(microtime()*10000);
  for($i=0;$i<4;$i++){
    $number.=dechex(rand(0,15));
  }
  $check=$number;
  $im=imagecreate($image_width,$image_height);
  imagecolorallocate($im,255,255,255);
  for($i=0;$i<strlen($check);$i++){
  $font=rand(40,80);
   $x=rand(1,8)+$image_width*$i/4;
   $y=rand(1,$image_height/4);
   $color=imagecolorallocate($im,rand(0,100),rand(0,150),rand(0,200));
   imagestring($im,$font,$x,$y,$check[$i],$color);
  }
imagepng($im);
imagedestroy($im);
?>