利用php生成验证码

 更新时间:2017年02月23日 08:50:13   作者:李宗禹  
本文主要分享了利用php生成验证码的示例代码,具有很好的参考价值,下面跟着小编一起来看下吧

话不多说,请看代码:

<?php 
/**
 * php生成验证码
 * @param $width 画布宽
 * @param $height 画布高
 * @param $vcodelen 验证码长度
 * @param $pointnum 干扰像素点数量
 * @param $linenum 干扰线条数量
 *
 * 思路:创建验证码画布,生成并填充背景色,生成验证码内容/干扰像素点/线,填充到画布,输出。
 */
 $width = 100;
 $height = 30;
 $vcodelen = 4;
 $pointnum = 200;
 $linenum = 3;
 // 创建画布
 $image = imagecreatetruecolor($width, $height);
 // 创建色块
 $bgcolor = imagecolorallocate($image, 255, 255, 255);
 // 填充画布背景色
 imagefill($image, 0, 0, $bgcolor);
 // 验证码内容
 for ($i=0; $i < $vcodelen; $i++) { 
  // 字体大小
  $fontsize = 5;
  // 字体颜色,颜色在限定范围内随机
  $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
  $data = 'abcdefghijklmnopqrstuvwxyz0123456789';
  // 验证码内容在以上字符串内随机截取
  $fontcontent = substr($data, rand(0,strlen($data)),1);
  // 字符串显示位置
  $x = ($i*$width/4)+rand(5,15);
  $y = rand(5,10);
  // 字符串填充图片
  // imagestring的字体大小可选1-5,字体再大需要用imagettftext函数(需要字体文件)
  imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
  // imagettftext($image, $fontsize, 0, $x, $y, $fontcolor, '/font/Geneva.dfont', $fontcontent);
 }
 // 干扰像素点
 for ($i=0; $i < $pointnum; $i++) { 
  $pointcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
  // 画布填充像素点函数
  imagesetpixel($image, rand(0,$width), rand(0,$height), $pointcolor);
 }
 // 干扰线条
 for ($i=0; $i < $linenum; $i++) { 
  $linecolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
  // 画布填充线条函数
  imageline($image, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height), $linecolor);
 }
 // 图片输出格式
 header('content-type: image/png');
 // 输出验证码图片
 imagepng($image);
 // 销毁画布
 imagedestroy($image);
?>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • php实现从上传文件创建缩略图的方法

    php实现从上传文件创建缩略图的方法

    这篇文章主要介绍了php实现从上传文件创建缩略图的方法,涉及php操作上传文件及图片操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • php+ajax登录跳转登录实现思路

    php+ajax登录跳转登录实现思路

    这篇文章主要介绍了php+ajax登录跳转登录实现思路,非常的简单,有需要的小伙伴可以参考下
    2016-07-07
  • Laravel 5.4重新登录实现跳转到登录前页面的原理和方法

    Laravel 5.4重新登录实现跳转到登录前页面的原理和方法

    在日常开发中,我们经常遇到一个需求,就是用户登陆后存在过期时间,超时用户需重新登录,下面这篇文章主要给大家介绍了关于Laravel 5.4重新登录实现跳转到登录前页面的原理和方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • php中echo与print区别点整理

    php中echo与print区别点整理

    在本篇文章里小编给大家整理的是一篇关于php中echo与print区别点,需要的朋友们可以参考下。
    2020-01-01
  • 浅谈PHP中的<<<运算符

    浅谈PHP中的<<<运算符

    本文给大家介绍的是PHP中提供了<<<运算符的使用方法,非常的简单,有需要的小伙伴可以参考下
    2016-04-04
  • PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例

    PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例

    这篇文章主要介绍了PHP结合jquery ajax实现上传多张图片,并限制图片大小操作,涉及php结合jQuery ajax文件上传及文件属性相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • PHP遍历二维数组的代码

    PHP遍历二维数组的代码

    最近在研究PageCookery的快速发布,解决手机没有Cookies的问题。在谓语调用部分要历遍数据库读取的二维数组。
    2011-04-04
  • 详解PHP Swoole与TCP三次握手

    详解PHP Swoole与TCP三次握手

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。TCP在IP报文的协议号是6。TCP是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。本文将详细介绍PHP Swoole与TCP三次握手。
    2021-05-05
  • ucenter通信原理分析

    ucenter通信原理分析

    这篇文章主要介绍了ucenter通信原理分析,大名鼎鼎的ucenter相信做站长的都知道,本文即来分析它的实现原理,需要的朋友可以参考下
    2015-01-01
  • 详解php的魔术方法__get()和__set()使用介绍

    详解php的魔术方法__get()和__set()使用介绍

    php的魔术方法__get()和__set()使用介绍,需要的朋友可以参考下
    2012-09-09

最新评论