PHP原生图片验证码转base64格式
2022/4/27 17:12:43
本文主要是介绍PHP原生图片验证码转base64格式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.简介
最近有个需求,就是把图片验证码转化为base64格式,tp5框架自带的think-captcha扩展包可以实现。但是,它有个缺点,不能获取验证码的值。在做前后端分离项目的时候,验证码检测有两种方式,各有利弊。
方式一:因为session不能共享,所以通过传递唯一uuid,后端用redis存储uuid对应的验证码,验证同理。
方式二:直接返回验证码的同时,把验证值也返回给前端,在前端去验证验证码的有效性
下面不多说,看代码。(如果你还有第三种方法,欢迎留言,共同学习)
2.代码片段
$width = 100; $height = 30; $size = 4; $fontSize = 10; $image = imagecreatetruecolor((int)$width, (int)$height); $bgcolor = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $bgcolor); $content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; $captcha = ""; for ($i = 0; $i < $size; $i++) { $fontsize = $fontSize; $fontcolor = imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120)); $fontcontent = substr($content, mt_rand(0, strlen($content)), 1); $captcha .= $fontcontent; $x = ($i * $width / 4) + mt_rand(5, 10); $y = mt_rand(5, 10); imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); } imagepng($image); $content = ob_get_clean(); imagedestroy($image); $base64 = 'data:image/png;base64,' . base64_encode($content); return json_encode(['code' => 0, 'data' => ['base64' => $base64, 'text' => $captcha], 'message' => '操作成功']);
这篇关于PHP原生图片验证码转base64格式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享