PHP自己的框架验证码Captcha使用(完善篇八)

news2024/9/25 15:26:04

1、实现效果生成验证验证码 

 

 

 

 2、验证码类CaptchaBase.php

<?php
class CaptchaBase
{
    private $width;
    private $height;
    private $length;
    public function __construct($width, $height, $length)
    {
        $this->width = $width;
        $this->height = $height;
        $this->length = $length;
    }
    public function generate()
    {
        $image = imagecreatetruecolor($this->width, $this->height);
        $background_color = imagecolorallocate($image, 255, 255, 255);
        imagefill($image, 0, 0, $background_color);
        $text_color = imagecolorallocate($image, 0, 0, 0);
        $captcha_string = $this->generateRandomString($this->length);
        $_SESSION['captcha'] = $captcha_string;
        imagestring($image, 5, 5, 5, $captcha_string, $text_color);
        header('Content-Type: image/jpeg');
        imagejpeg($image);
        imagedestroy($image);
    }
    private function generateRandomString($length)
    {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $random_string = '';
        for ($i = 0; $i < $length; $i++) {
            $random_string .= $characters[rand(0, strlen($characters) - 1)]." ";
        }
        return trim($random_string);
    }
    public function validate($input)
    {
        $captcha= strtolower(preg_replace('/\s+/', '', $_SESSION['captcha']));
        $input= strtolower(preg_replace('/\s+/', '', $input));
        if ($captcha&& $captcha ==$input) { // 将用户输入和保存的验证码都转换为小写形式进行比较
            return true;
        }
        return false;
    }
}

3、封装function.php

function Code(){
     return new CaptchaBase(80, 30, 4);
}

4、使用和验证indexCrl.php

<?php
class indexCrl{
    //生成验证码
    public function index(){
        echo  Code()->generate();
    }
    //验证验证码
    public function validate(){
      if(Code()->validate($_GET['code'])){
         echo '验证成功';
       }else{
          echo '验证失败';
       }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/930264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Vue前后端分离社区智慧养老监护管理平台设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

亚洲辛辣菜肴搭档什么葡萄酒最好?

我们都有那种甜美、活泼、超级容易相处的朋友&#xff0c;他们是你想在一起度过美好时光的人。在葡萄酒的世界里&#xff0c;莫斯卡托就是这样的朋友。莫斯卡托是一个甜味品种&#xff0c;在过去的几年里葡萄酒在世界范围内越来越受欢迎。由于酒精含量低&#xff0c;轻微起泡&a…

202325读书笔记|《花间集评注》——金盏不辞须满酌,海棠花下思朦胧,醉香风。满身香雾簇朝霞。世间屏障,彩笔画娇娆。

202325读书笔记|《花间集评注》——金盏不辞须满酌&#xff0c;海棠花下思朦胧&#xff0c;醉香风。满身香雾簇朝霞。世间屏障&#xff0c;彩笔画娇娆。 花间集评注卷一花间集评注卷二花间集评注卷三花间集评注卷四花间集评注卷五花间集评注卷六花间集评注卷七花间集评注卷八花…

Linux系统USB摄像头测试程序(四)_视频旋转及缩放

下面的程序实现了视频的旋转及缩放&#xff0c;窗口中点击鼠标左键视频向左旋转&#xff0c;点击鼠标右键视频向右旋转并且视频缩小了二分之一。程序中首先把yvyv422转换成了RGB24&#xff0c;然后利用opencv进行了旋转和缩放&#xff0c;其后用sdl2进行了渲染。使用了ffmpeg、…

定制效果在线定制印刷系统源码 DIY在线定制系统源码 云印刷定制系统源码手机、PC端实时互通

支持各类产品的在线定制&#xff0c;无论是水杯雨伞U盘还是T恤衬衫四件套&#xff0c;均可轻松进行定制 独创制作间概念&#xff0c;同一套模板可以重复对应不同制作间 手机、PC端实时互通&#xff0c;客户可通过任意途径进行图片上传、编辑&#xff0c;一方修改另一方即时可见…

Linux操作系统--linux环境搭建(1)

在上一节课中,我们对Linux有了一个初步的认识,想要进一步的学习Linux,我们需要先把Linux需要的环境搭建出来。下面我们一起来看一下如何搭建Linux环境。 1.CentOS下载 官方下载地址: The CentOS Project 下载步骤如下所示: 选择内容 选择镜像 2.Vmware下载安装 一台电脑本…

【Kubernetes】Kubernetes 集群的组件介绍

基本概念控制平面组件&#xff08;Control Plane Components&#xff09;kube-apiserveretcdkube-schedulerkube-controller-managercloud-controller-manager&#xff08;可选&#xff09;kube-apiserver的重要性 ❗ Node 组件kubeletkube-proxy容器运行时&#xff08;Contain…

糟改押ong韵诗词,末三字改qiao ben zhong

题目给出诗词行的汉语拼音&#xff0c;糟改诗词押ong诗词行末三字“敲笨钟“。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff…

Spark大数据分析与实战笔记(第一章 Scala语言基础-2)

文章目录 章节概要1.2 Scala的基础语法1.2.1 声明值和变量1.2.2 数据类型1.2.3 算术和操作符重载1.2.4 控制结构语句1.2.5 方法和函数 章节概要 Spark是专为大规模数据处理而设计的快速通用的计算引擎&#xff0c;它是由Scala语言开发实现的&#xff0c;关于大数据技术&#xf…

基于Java+SpringBoot+Vue前后端分离相亲网站系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

基于Java+SpringBoot+Vue前后端分离智能无人仓库管理设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

10 - 网络通信优化之通信协议:如何优化RPC网络通信?

微服务框架中 SpringCloud 和 Dubbo 的使用最为广泛&#xff0c;行业内也一直存在着对两者的比较&#xff0c;很多技术人会为这两个框架哪个更好而争辩。 我记得我们部门在搭建微服务框架时&#xff0c;也在技术选型上纠结良久&#xff0c;还曾一度有过激烈的讨论。当前 Sprin…

如何让ESP8266恢复出厂设置

1&#xff0c;安装python&#xff0c;2.7或者更高版本 2&#xff0c;运行&#xff1a;get-pip.py 3&#xff0c;运行&#xff1a;pip install esptool 4&#xff0c;运行的指令&#xff1a;esptool.exe --port COM3 erase_flash&#xff0c; 如果报错 就改成这样的命令试试&am…

算法通过村第三关-数组白银笔记|数组双指针

文章目录 前言什么是数组双指针数组中删除元素专题原地移除所有等值val的元素快慢双指针对撞双指针对撞覆盖 删除有序数组中的重复项 总结 前言 提示&#xff1a;世间从不缺少辉煌的花冠&#xff0c;缺少的是被花冠渲染的淡定。 什么是数组双指针 这是一种长期总结下来的思想&…

基于Java+SpringBoot+Vue前后端分离在线考试与学习交流网页平台设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

象小朋友学识字一样建构战略

战略认知派: 就像小孩子学识字的过程一样【安志强趣讲268期】 趣讲大白话&#xff1a;提高认知中长大 **************************** 基于认知心理学 战略的形成是认知构建的过程 最找连战略这个词都不一定知道 慢慢有些概念 慢慢形成整体的认知 战略认知派分两个分支 第一分支…

VMware安装OpenEuler

VMware安装OpenEuler 需要考虑的因素&#xff1a; 安装系统的用途&#xff1a;桌面开发、服务器、Linux学习使用&#xff1b;磁盘分区规划&#xff1a;最小120G&#xff0c;划分 boot, swap, 根分区等网络&#xff1a;是否对外提供服务&#xff08;NAT模式、桥接模式、仅主机…

ModaHub魔搭社区:WinPlan经营大脑数据采集

目录 WinPlan经营大脑数据采集介绍 WinPlan经营大脑数据采集模版 WinPlan经营大脑数据采集介绍 基于指标、维度来创建业务表单,通过业务表单的形式来采集实际数据,最终生成企业统一的经营数据库。由于需要客户创建数据采集模版(业务流程),然后可以基于各个业务模版作为…

WebSocket详解以及应用

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;websocket、网络、长连接、前端☀️每日 一言&#xff1a;任何一个你不喜欢而又离不开的地方&#xff0c;任何一种你不喜欢而又无法摆脱的生活&#xff0c;都是监狱&#xff01; 一、前言 我们在…

定州市社会保险待遇手机app-定州社会保障

社会保险的缴纳主要包括养老保险、医疗保险、生育保险&#xff0c;单位职工还有工伤保险和失业保险的缴纳&#xff0c;社会保险的缴纳一般都在当地人力资源和社会保障部门&#xff0c;在定州&#xff0c;社会保险登记的流程是怎样走的&#xff1f;下面由法律指南小编为大家解答…