当前位置:网站首页>laravel框架之验证码控制器
laravel框架之验证码控制器
2022-08-08 23:47:00 【一殊酒】
<?php
namespace App\Http\Controllers\CheckCode;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class CodeController extends BaseController
{
public function code(){
//创建Vcode类对象
$vcode=new Vcode();
//调用类方法
$vcode->doimg();
}
}
class Vcode{
private $charset='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; //随机因子
private $code; //验证码
private $codelen=4; //验证码长度
private $width=130; //宽度
private $height=50; //高度
private $img; //图形资源句柄
private $font; //指定的字体
private $fontsize=20; //指定字体大小
private $fontcolor; //指定字体颜色
//构造方法初始化
public function __construct(){
$this->font=dirname(__FILE__).'/Elephant.ttf';// 字体路径
}
//生成随机码
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 creatBg(){
$this->img=imagecreatetruecolor($this->width,$this->height);
$color=imagecolorallocate($this->img,mt_rand(157,255),mt_rand(157,255),mt_rand(157,255));
imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
}
//生成文字
private function creatFont(){
$_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 creatLine(){
//线条
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');
// 清空缓冲区
ob_clean();
imagepng($this->img);
imagedestroy($this->img);
}
//对外生成
public function doimg(){
$this->creatBg();
$this->createCode();
$this->creatLine();
$this->creatFont();
$this->output();
$_SESSION['Code']=$this->code;
}
//获取验证码
public function getcode(){
return strtoupper($this->code);
}
//返回验证码
public function get(){
return $_SESSION['Code'];
}
}
?>
边栏推荐
- [Deep Learning] TensorFlow Learning Road One: Introduction to TensorFlow and Implementation of Linear Regression and Logistic Regression
- (newcoder 15079)无关(容斥原理)
- linux环境安装mysql和使用中的常见问题
- 时间对象的格式化
- LightningChart .NET 10.3.2 Crack 支持旧项目直接升级
- WeChat applet error undefined Expecting 'STRING','NUMBER','NULL','TRUE','FALSE','{','[', got ]Solution
- 51nod 2877熟练使用tarjan的知识
- 获取当前时间的前/后某一天的日期
- ArrayAccess 接口用处
- MySQL 高级知识【 MyISAM 读锁写锁限制】
猜你喜欢
随机推荐
机器学习建模高级用法!构建企业级AI建模流水线
51nod1656 合并trie树
PHP 类函数和对象函数
重发布实验
[Deep Learning] TensorFlow Learning Road One: Introduction to TensorFlow and Implementation of Linear Regression and Logistic Regression
-Wl,--start-group ... -Wl,--end-group for resolving circular dependencies of several libraries
Golang gorm 数据库连接,迁移,索引
并发编程第8篇,AQS源码解读
(2022牛客多校三)A-Ancestor(LCA)
【深度学习】TensorFlow学习之路二:ANN简介及TensorFlow实现
Get the current time before/after one day's date
linux环境安装mysql和使用中的常见问题
不躺平,然后做到极致,就是最大的“安全感”
OSPF总结作业
(2022杭电多校三)1009.Package Delivery(贪心)
【瑞吉外卖】day04:员工分页查询、启用/禁用员工账号、编辑员工信息
12 Spark on RDD 分区器
11 Spark on RDD CheckPoint
官方一键安装redis集群
风控建模二:建模方案拟定









