图形验证码实现(代码)
图形验证码类:
<?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();"/>
图形验证码实现(代码)相关推荐
- c# 图形验证码生成 代码解析
之前做登录时,发送短信验证码需要做安全控制,使用到了图形验证码 使用的思路是: 1.建立一个验证码图片生成器页面 2.生成字母或数字组成的随机字符串 3.在Cookie中保存随机验证码 4.根据生成的 ...
- 图形验证码最佳攻略2
下面是注册 如果是手机用户注册,需要发送短信验证码 说明: 发送图形验证码是为了拦截发送短信的.但是不拦截"注册帐号" 但是,用户体验很别扭,因为图形验证码很显然是错误的,但是却 ...
- html的表单图形验证码怎么做,django中简单图形验证码实现
要实现django图形验证码,可以使用简单的captcha 一.安装captcha 在Pycharm的terminal中,使用pip安装第三方库: 执行命令: pip install django-s ...
- 图形验证码接口及其重构思想
文章目录 开发生成图形验证码接口 图片实体 ImageCode 图片接口 ValidateCodeController 在认证流程中加入图形验证码校验 登录页面 安全认证配置不拦截图片路径 测试 图片 ...
- vue 如何实现点击动态更新图形验证码
一.vue 点击动态更新图形验证码 在验证码的图片上,绑定点击事件 getCaptcha(),同时使用 ref 指明图形验证码的引用对象,代码如下所示: <section class=" ...
- python代码标识码_代码分享:使用Python和Tesseract来识别图形验证码
原标题:代码分享:使用Python和Tesseract来识别图形验证码 *本文原创作者:ipenox,本文属FreeBuf原创奖励计划,未经许可禁止转载 各位在企业中做Web漏洞扫描或者渗透测试的朋友 ...
- app前端图形验证码(全部代码)
直接上代码 <view ><input type="text" placeholder="请输入图形验证码" v-model="im ...
- php图形 验证码代码,PHP制作图形验证码代码分享,php图形验证码代码_PHP教程
PHP制作图形验证码代码分享,php图形验证码代码 效果: myvcode.class.php:封装创建验证码的类 /* * file:myvcode.class.php * 验证码类,类名Vcode ...
- php图形验证码验证,php图片验证码代码
php验证码效果代码 //文件头... header("Content-type: image/png"); //创建真彩色白纸 $im = @imagecreatetruecol ...
- Django博客系统注册(图形验证码接口设计和定义)
1. 准备captcha包(该包用于生成图形验证码) 1.将生成图片验证码的库复制到新建的libs包中. 2.安装Python处理图片的库 这儿可能会变红显示错误: 解决方案:在虚拟环境中安装Pill ...
最新文章
- python自带库处理excel-【Python】处理Excel的库Xlwings
- 2.1.3 字符与字符串
- FBI发警告:留意联网汽车被黑客攻击风险
- 计算机应用技术教程的答案,计算机应用技术教程第3章办公自动化答案
- jquery实现倒计时
- 土豆春季实习试题之惨烈教训
- 计算机网络基础实训精品课,《计算机网络技术》精品课程建设总结报告【荐】.doc...
- hdu 5631 Rikka with Graph(图)
- Gitlab分支保护
- 前端开源实战项目推荐
- 奥的斯自动人行道服务器密码,奥的斯服务器中文说明21页
- linux重装声卡驱动,linux声卡驱动重装
- 宝塔面板建立站点无法打开网页解决办法
- aspcms友情链接调用
- 单阶段和两阶段目标检测
- linux车机系统怎么进工厂模式,工厂方法模式 - 跟JBPM学习设计模式_Linux编程_Linux公社-Linux系统门户网站...
- stable diffusion图片转图片(教程)
- Julia教程:Julia语言入门
- 图卷积神经网络(GCN)
- 【转】用IDCNN和CRF做端到端的中文实体识别
热门文章
- bt种子文件变成html,bt种子文件是什么?bt种子文件怎么用?
- 安装vs产生的垃圾文件(eula.1028.txt,install.res.1028.dll,VC_RED.MSI等)
- 2023年东南大学机械工程考研上岸经验
- vb基础计算机应用,老师给学生的-VB计算机应用基础考试
- 网管随笔02---【爱普生R230打印机清零大作战】
- 计算机安装微信打不开,电脑版微信打不开解决方法
- 排名前三的网址导航站和源码资源站分享
- 三菱plc pwm指令_2020学员高级电工必须掌握的20个各种PLC设备编程
- matlab——度分秒与度的转换
- x79服务器主板装系统,【小白经历分享】华南X79 E5 2670+470D 成功装上双系统 【win10+Sierra10.12.6】...