图形验证码类:

<?php
namespace app\common\services\captcha;
/** 验证码类* */class ValidateCode {private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子private $code;//验证码private $codelen = 4;//验证码长度private $width = 100;//宽度private $height = 37;//高度private $img;//图形资源句柄private $font;//指定的字体private $fontsize = 28;//指定字体大小private $fontcolor;//指定字体颜色//构造方法初始化public function __construct( $path ) {$this->font = $path;//注意字体路径要写对,否则显示不了图片}//生成随机码private function createCode() {$_len = strlen($this->charset)-1;for ($i=0;$i<$this->codelen;$i++) {$this->code .= $this->charset[mt_rand(0,$_len)];}}//生成背景private function createBg() {$this->img = imagecreatetruecolor($this->width, $this->height);$color = imagecolorallocate($this->img, 255, 255,255);imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);}//生成文字private function createFont() {$_x = $this->width / $this->codelen;for ($i=0;$i<$this->codelen;$i++) {$this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);}}//生成线条、雪花private function createLine() {//线条for ($i=0;$i<6;$i++) {$color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);}//雪花for ($i=0;$i<100;$i++) {$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);}}//输出private function outPut() {header('Content-type:image/png');imagepng($this->img);imagedestroy($this->img);}//对外生成public function doimg() {$this->createBg();$this->createCode();//$this->createLine();$this->createFont();$this->outPut();}//获取验证码public function getCode() {return strtolower($this->code);}
}

实例:
基于Yii2框架

后端
<?php
namespace app\controllers
use use app\common\services\captcha\ValidateCode;
class DefaultController
{public function actionImg_captcha(){$font_path = \Yii::$app->getBasePath()."/web/fonts/captcha.ttf";//加载字体文件$captcha_handle = new ValidateCode( $font_path );//实例化验证码类$captcha_handle->doimg();//生成验证码}
}
前端
<img src="<?=/default/img_captcha"?>" onclick="this.src='/default/img_captcha?'+Math.random();"/>

图形验证码实现(代码)相关推荐

  1. c# 图形验证码生成 代码解析

    之前做登录时,发送短信验证码需要做安全控制,使用到了图形验证码 使用的思路是: 1.建立一个验证码图片生成器页面 2.生成字母或数字组成的随机字符串 3.在Cookie中保存随机验证码 4.根据生成的 ...

  2. 图形验证码最佳攻略2

    下面是注册 如果是手机用户注册,需要发送短信验证码  说明: 发送图形验证码是为了拦截发送短信的.但是不拦截"注册帐号" 但是,用户体验很别扭,因为图形验证码很显然是错误的,但是却 ...

  3. html的表单图形验证码怎么做,django中简单图形验证码实现

    要实现django图形验证码,可以使用简单的captcha 一.安装captcha 在Pycharm的terminal中,使用pip安装第三方库: 执行命令: pip install django-s ...

  4. 图形验证码接口及其重构思想

    文章目录 开发生成图形验证码接口 图片实体 ImageCode 图片接口 ValidateCodeController 在认证流程中加入图形验证码校验 登录页面 安全认证配置不拦截图片路径 测试 图片 ...

  5. vue 如何实现点击动态更新图形验证码

    一.vue 点击动态更新图形验证码 在验证码的图片上,绑定点击事件 getCaptcha(),同时使用 ref 指明图形验证码的引用对象,代码如下所示: <section class=" ...

  6. python代码标识码_代码分享:使用Python和Tesseract来识别图形验证码

    原标题:代码分享:使用Python和Tesseract来识别图形验证码 *本文原创作者:ipenox,本文属FreeBuf原创奖励计划,未经许可禁止转载 各位在企业中做Web漏洞扫描或者渗透测试的朋友 ...

  7. app前端图形验证码(全部代码)

    直接上代码 <view ><input type="text" placeholder="请输入图形验证码" v-model="im ...

  8. php图形 验证码代码,PHP制作图形验证码代码分享,php图形验证码代码_PHP教程

    PHP制作图形验证码代码分享,php图形验证码代码 效果: myvcode.class.php:封装创建验证码的类 /* * file:myvcode.class.php * 验证码类,类名Vcode ...

  9. php图形验证码验证,php图片验证码代码

    php验证码效果代码 //文件头... header("Content-type: image/png"); //创建真彩色白纸 $im = @imagecreatetruecol ...

  10. Django博客系统注册(图形验证码接口设计和定义)

    1. 准备captcha包(该包用于生成图形验证码) 1.将生成图片验证码的库复制到新建的libs包中. 2.安装Python处理图片的库 这儿可能会变红显示错误: 解决方案:在虚拟环境中安装Pill ...

最新文章

  1. python自带库处理excel-【Python】处理Excel的库Xlwings
  2. 2.1.3 字符与字符串
  3. FBI发警告:留意联网汽车被黑客攻击风险
  4. 计算机应用技术教程的答案,计算机应用技术教程第3章办公自动化答案
  5. jquery实现倒计时
  6. 土豆春季实习试题之惨烈教训
  7. 计算机网络基础实训精品课,《计算机网络技术》精品课程建设总结报告【荐】.doc...
  8. hdu 5631 Rikka with Graph(图)
  9. Gitlab分支保护
  10. 前端开源实战项目推荐
  11. 奥的斯自动人行道服务器密码,奥的斯服务器中文说明21页
  12. linux重装声卡驱动,linux声卡驱动重装
  13. 宝塔面板建立站点无法打开网页解决办法
  14. aspcms友情链接调用
  15. 单阶段和两阶段目标检测
  16. linux车机系统怎么进工厂模式,工厂方法模式 - 跟JBPM学习设计模式_Linux编程_Linux公社-Linux系统门户网站...
  17. stable diffusion图片转图片(教程)
  18. Julia教程:Julia语言入门
  19. 图卷积神经网络(GCN)
  20. 【转】用IDCNN和CRF做端到端的中文实体识别

热门文章

  1. bt种子文件变成html,bt种子文件是什么?bt种子文件怎么用?
  2. 安装vs产生的垃圾文件(eula.1028.txt,install.res.1028.dll,VC_RED.MSI等)
  3. 2023年东南大学机械工程考研上岸经验
  4. vb基础计算机应用,老师给学生的-VB计算机应用基础考试
  5. 网管随笔02---【爱普生R230打印机清零大作战】
  6. 计算机安装微信打不开,电脑版微信打不开解决方法
  7. 排名前三的网址导航站和源码资源站分享
  8. 三菱plc pwm指令_2020学员高级电工必须掌握的20个各种PLC设备编程
  9. matlab——度分秒与度的转换
  10. x79服务器主板装系统,【小白经历分享】华南X79 E5 2670+470D 成功装上双系统 【win10+Sierra10.12.6】...