ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP原生图片验证码转base64格式

2022-04-27 16:32:54  阅读:186  来源: 互联网

标签:rand image base64 验证码 content mt PHP


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' => '操作成功']);

 

标签:rand,image,base64,验证码,content,mt,PHP
来源: https://www.cnblogs.com/pitmanhuang/p/16199473.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有