>  기사  >  백엔드 개발  >  PHP 이미지 인증코드 예시

PHP 이미지 인증코드 예시

WBOY
WBOY원래의
2016-07-25 09:00:22961검색
php生成验证码图片的例子,适合用来学习掌握php gd库,有需要的朋友,参考下吧。

代码如下:

<?php  
 /** 
  * 生成验证码图片 
  * site bbs.it-home.org
  * @param String $word 验证码在session中的变量名称 
  */  
 function valiCode($word='randcode'){  
  Header("Content-type: image/gif");  
  $border = 0; //是否要边框 1要:0不要  
  $how = 4; //验证码位数  
  $w = $how*15; //图片宽度  
  $h = 18; //图片高度  
  $fontsize = 10; //字体大小  
  $alpha = "abcdefghijkmnpqrstuvwxyz"; //验证码内容1:字母  
  $number = "23456789"; //验证码内容2:数字  
  $randcode = ""; //验证码字符串初始化  
  srand((double)microtime()*1000000); //初始化随机数种子  
  $im = ImageCreate($w, $h); //创建验证图片  
  /* 
  * 绘制基本框架 
  */  
  $bgcolor = ImageColorAllocate($im, 255, 255, 255); //设置背景颜色  
  ImageFill($im, 0, 0, $bgcolor); //填充背景色  
  if($border)  
  {  
   $black = ImageColorAllocate($im, 0, 0, 0); //设置边框颜色  
   ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//绘制边框  
  }  
    
  /* 
  * 逐位产生随机字符 
  */  
  for($i=0; $i<$how; $i++)  
  {  
   $alpha_or_number = mt_rand(0, 1); //字母还是数字  
   $str = $alpha_or_number ? $alpha : $number;  
   $which = mt_rand(0, strlen($str)-1); //取哪个字符  
   $code = substr($str, $which, 1); //取字符  
   $j = !$i ? 4 : $j+15; //绘字符位置  
   $color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色  
   ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符  
   $randcode .= $code; //逐位加入验证码字符串  
  }  
    
  /* 
  * 如果需要添加干扰就将注释去掉 
  * 
  * 以下for()循环为绘背景干扰线代码 
  */  
  /* +  -----绘背景干扰线 开始 ----- + */  
  for($i=0; $i<5; $i++)//绘背景干扰线  
  {  
   $color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色  
   ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线  
  }  
  /* +  -----绘背景干扰线 结束 ------ + */  
    
  /* 
  * 如果需要添加干扰就将注释去掉 
  * 
  * 以下for()循环为绘背景干扰点代码 
  */  
  /* +  ------绘背景干扰点 开始 ------- + */  
    
  for($i=0; $i<$how*40; $i++)//绘背景干扰点  
  {  
   $color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色  
   ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点  
  }  
    
  /* +  ------绘背景干扰点 结束 --------- + */  
    
  //把验证码字符串写入session  方便提交登录信息时检验验证码是否正确  例如:$_POST['randcode'] = $_SESSION['randcode']  
  $_SESSION[$word] = $randcode;  
  /*绘图结束*/  
  Imagegif($im);  
  ImageDestroy($im);  
  /*绘图结束*/  
 }  
 ?>
您可能感兴趣的文章: php验证码简单函数代码(附效果图) 分享一个php 验证码类及调用示例 php验证码的三个实例代码分享 一个php验证码的封装类 php自定义大小验证码的实例代码 php生成扭曲及旋转的验证码图片的实例代码 php仿QQ验证码的实现代码 php验证码函数使用的例子 php5验证码类(简易实用型) php验证码(GD库生成验证码)的例子 php点击验证码实时刷新的实现代码 php彩色验证码的简单例子 php验证码刷新与局部刷新的实现方法 php GD库生成验证码的实例 php生成验证码的例子 php随机验证码 php生成随机验证码(图文) 一个比较稳定的php登陆系统验证码 用php生成带有雪花背景的验证码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.