首页 > 技术 > 正文

用PHP实现图片验证码示例
2018-10-13 16:45:04   来源:灰灰   评论:0 点击:

1、产生随机字符串2、创建一张简单的图片,设置背景色,文本色3、再加一些干扰线,干扰素4、输出图像5、销毁图像资源<?php PHP生成图片验
1、产生随机字符串
 
2、创建一张简单的图片,设置背景色,文本色
 
3、再加一些干扰线,干扰素
 
4、输出图像
 
5、销毁图像资源
 
<?php
 
//PHP生成图片验证码
 
class VerifyImage{
 
  private $verifyCode;
  private $image;
 
  //生成随机字串
  private function createCode($type=1,$length=4){
      if ($type == 1) {
          $verifyCode = implode('', range(0, 9));
      }elseif ($type == 2) {
          $verifyCode = implode('', array_merge(range('a', 'z'),range('A', 'Z')));
      }else{
          $verifyCode = implode('', array_merge(range('a', 'z'),range(0, 9),range('A', 'Z')));
      }
 
      //判断生成字符是否符合要求
      if (strlen($verifyCode)<$length) {
          return false;
      }
      //打乱字符串
      $verifyCode = str_shuffle($verifyCode);
      return substr($verifyCode, 0,$length);
  }
  //生成图片,并加入干扰线,干扰素
  public function createImage($type=1,$length=4,$width = 80,$height = 40){
      $verifyCode = $this->createCode($type,$length);
      $image = imagecreatetruecolor($width, $height);
 
      //白色背景
      $white = imagecolorallocate($image, 255, 255, 255);
      //字体颜色
      $fontStyle = imagecolorallocate($image, rand(0, 255),rand(0, 255), rand(0, 255));;
      imagefill($image, 0, 0, $white);
      imagestring($image, 5, 10, 10, $verifyCode, $fontStyle);
      //加入干扰点
      for($i = 0; $i < 80; $i++) {  
          $color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));  
          imagesetpixel($image, rand(0, $width), rand(0,$height), $color);  
      }
      //干扰线  
      for($i = 0; $i < 5; $i++) {  
          $color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));  
          imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $color);  
      } 
      //输出图片
      header("Content-type: image/png"); 
      imagepng($image);
      //释放资源
      imagedestroy($image);
  }
}
 
$im = new VerifyImage();;
$im->createImage(3);
 
?>
 

相关热词搜索:php 图片验证码

上一篇:css3旋转属性和延迟属性
下一篇:数据库导入错误DROP TABLE IF EXISTS `my_admin` ;

分享到: 收藏
下面的评论可以用QQ或者微信微博等账号快速登录喔!灰灰等待您的评论......
看了下还是不好看,那再加一个......
看了下还是不好看,以后在这价格留言功能什么的可能会好些......