利用php生成验证码

发布时间 - 2026-01-10 23:13:57    点击率:

话不多说,请看代码:

<?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生成图片验证码功能示例  # 一个漂亮的php验证码类(分享)  # php图片验证码代码  # PHP生成图片验证码、点击切换实例  # PHP验证码类代码( 最新修改  # 完全定制化! )  # PHP使用CURL实现对带有验证码的网站进行模拟登录的方法  # 完美解决thinkphp验证码出错无法显示的方法  # php发送短信验证码完成注册功能  # 背景色  # 可选  # 多说  # 需要用  # 再大  # imagefill  # fontsize  # imagecolorallocate  # imagecreatetruecolor  # bgcolor  # image  # brush  # lt  # rand  # pre  # class  # vcodelen  # pointnum 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 图册素材网站设计制作软件,图册的导出方式有几种?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  七夕网站制作视频,七夕大促活动怎么报名?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  大连 网站制作,大连天途有线官网?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何用PHP工具快速搭建高效网站?  zabbix利用python脚本发送报警邮件的方法  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  装修招标网站设计制作流程,装修招标流程?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  用v-html解决Vue.js渲染中html标签不被解析的问题  如何注册花生壳免费域名并搭建个人网站?  在线制作视频的网站有哪些,电脑如何制作视频短片?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何在Tomcat中配置并部署网站项目?  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  大同网页,大同瑞慈医院官网?  如何用免费手机建站系统零基础打造专业网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  深入理解Android中的xmlns:tools属性  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  EditPlus中的正则表达式 实战(1)  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel怎么上传文件_Laravel图片上传及存储配置  如何在云指建站中生成FTP站点?  jQuery中的100个技巧汇总  利用 Google AI 进行 YouTube 视频 SEO 描述优化  手机软键盘弹出时影响布局的解决方法  jquery插件bootstrapValidator表单验证详解  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何在建站宝盒中设置产品搜索功能?  如何在阿里云通过域名搭建网站?  Python文件异常处理策略_健壮性说明【指导】  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程