1、下载

composer require topthink/think-captcha 1.*
// composer 下载
//过程
D:\PHP\phpstudy_pro\WWW\1906A\pyg>composer require topthink/think-captcha 1.*
./composer.json has been updated
Running composer update topthink/think-captcha
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking topthink/think-captcha (v1.0.8)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading topthink/think-captcha (v1.0.8)
- Installing topthink/think-captcha (v1.0.8): Extracting archive
Generating autoload files

//下载完成后

2.验证码包的位置:

3. 修改view/login/login.html 验证码图片img标签src属性

<!DOCTYPE html>
{__NOLAYOUT__}
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>登录</title>
<link rel="stylesheet" href="__STATIC__/admin/css/login.css">
</head>
<body>
<form action="/goods/login/save" method="post">
<div class="login">
<div class="center">
<h1>Login</h1>
<div class="inputLi">
<strong>账户</strong>
<input type="text" placeholder="账户" name="account">
</div>
<div class="inputLi">
<strong>密码</strong>
<input type="password" placeholder="密码" name="password">
</div>
<div class="inputLi">
<strong>验证码</strong>
<input type="text" placeholder="" name="cord">
<img src="{:captcha_src()}" name="img" onclick="this.src='{:captcha_src()}'"
>
</div>
<div class="inputLi">
<button type="submit">登录</button>
</div>
</div>
</div>
</form>
</body>
</html>

4.控制器验证登录,记录session

  public function save(Request $request)
{
//
$params = $request->param();
//验证参数、非空
$rule = [
'account' => 'require',
'password' => 'require',
'cord' => 'require',
];
$tips = [
'account.require' => '账号不可以为空',
'password.require' => '密码不可以为空',
'cord.require' => '验证码不可以为空',
];
$validate = new Validate($rule, $tips);
$result = $validate->check($params);
if (!$result) {
$this->error($validate->getError());
}
//数据库验证参数
$data = GoodModel::login($params);
//验证账号
if ($params['account'] != $data['name']) {
$this->error('账号错误', '/goods/login/create');
}
//验证密码
if (md5($params['password']) != md5($data['password'])) {
$this->error('密码错误', '/goods/login/create');
}
//验证码进行验证
if (!captcha_check($params['cord'])) {
$this->error('验证码输入错误', '/goods/login/create');
};
if ($data){
//记录session
session('name',$data['name']);
$this->success('登录成功', '/goods/goods/index');
} }

think php 验证码的更多相关文章

  1. .net点选验证码实现思路分享

    哈哈好久没冒泡了,最进看见点选验证码有点意思,所以想自己写一个. 先上效果图 如果你被这个效果吸引了就请继续看下去. 贴代码前先说点思路: 1.要有一个汉字库,并按字形分类.(我在数据库里是安部首分类 ...

  2. 【探索】无形验证码 —— PoW 算力验证

    先来思考一个问题:如何写一个能消耗对方时间的程序? 消耗时间还不简单,休眠一下就可以了: Sleep(1000) 这确实消耗了时间,但并没有消耗 CPU.如果对方开了变速齿轮,这瞬间就能完成. 不过要 ...

  3. TODO:Laravel增加验证码

    TODO:Laravel增加验证码1. 先聊聊验证码是什么,有什么作用?验证码(CAPTCHA)是"Completely Automated Public Turing test to te ...

  4. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

  5. 随手记_C#验证码

    前言 最近在网上偶然看见一个验证码,觉得很有意思,于是搜了下,是使用第三方实现的,先看效果: 总体来说效果还是可以的,官方提供的SDK也比较详细,可配置性很高.在这里在简单啰嗦几句使用方式: 使用步骤 ...

  6. WPF做12306验证码点击效果

    一.效果 和12306是一样的,运行一张图上点击多个位置,横线以上和左边框还有有边框位置不允许点击,点击按钮输出坐标集合,也就是12306登陆的时候,需要向后台传递的参数. 二.实现思路 1.获取验证 ...

  7. 零OCR基础6行代码实现C#验证码识别

    这两天因为工作需要,要到某个网站采集信息,一是要模拟登陆,二是要破解验证码,本想用第三方付费打码,但是想想网上免费的代码也挺多的,于是乎准备从网上撸点代码下来,谁知道,撸了好多个都不行,本人以前也没接 ...

  8. ASP.NET中画图形验证码

    context.Response.ContentType = "image/jpeg"; //生成随机的中文验证码 string yzm = "人口手大小多少上中下男女天 ...

  9. asp.net mvc 验证码

    效果图 验证码类 namespace QJW.VerifyCode { //用法: //public FileContentResult CreateValidate() //{ // Validat ...

  10. ecshop验证码

    <?php //仿制ecshop验证码(四位大写字母和数字.背景) //处理码值(四位大写字母和数字组成) //所有的可能的字符集合 $chars = 'ABCDEFGHIJKLMNOPQRST ...

随机推荐

  1. vivo直播应用技术实践与探索

    一.概述 2019年vivo直播平台立项,初期与优秀的顶部直播平台进行联运直播开发,进行市场,产品和技术的初步探索:再到后来为了丰富直播的内容和形式,开始自己独立探索:之后,我们结合vivo现阶段的直 ...

  2. 浅谈AngularJS中使用$resource

    这个服务可以创建一个资源对象,我们可以用它非常方便地同支持RESTful的服务端数据源进行交互,当同支持RESTful的数据模型一起工作时,它就派上用场了. REST是Representational ...

  3. 使用Maven导入MySQL驱动包遇到的问题

    问题描述 今天在使用Maven导入MySQL数据库驱动包依赖后,直接运行项目,出现错误. java.sql.SQLException: No suitable driver found for jdb ...

  4. Jackson中处理map中的null key 或者null value 及实体字段中的null value

    1.map中有null key时的序列化  当有null key时,jackson序列化会报 Null key for a Map not allowed in JSON (use a convert ...

  5. 网络层主要协议与arp欺骗

    网络层主要协议与arp欺骗 目录 网络层主要协议与arp欺骗 一.网络层(Network Layer) 1.网络层的功能 2.IP数据报(IP Datagram) 二.网络层的主要协议 1.ICMP协 ...

  6. Msi.h causes compilation error in vs2010

    创建一个Win32 Console工程ReadFromMSM,什么都不需要做. 在ReadFromMSM.cpp文件中引入头文件: #include <msi.h> 编译,会发现有成堆的错 ...

  7. 人工智能——CNN卷积神经网络项目之猫狗分类

    首先先导入所需要的库 import sys from matplotlib import pyplot from tensorflow.keras.utils import to_categorica ...

  8. Bootstrap提供的CDN服务标签与下载文档

    目录 1.引入Bootstrap提供的CDN服务 1.选择下载Bootstrap CDN 二:下载Bootstrap官方文档 1.进入Bootstrap官网,选择3版本中文档. 1.引入Bootstr ...

  9. Solution -「Gym 102759I」Query On A Tree 17

    \(\mathcal{Description}\)   Link.   给定一棵含 \(n\) 个结点的树,结点 \(1\) 为根,点 \(u\) 初始有点权 \(a_u=0\),维护 \(q\) 次 ...

  10. 字符集编码(上):Unicode 之前

    计算机起初是设计用来做数学计算的,Computer 一词英文原意是"计算员"--在计算机发明之前,计算员是一个独立的职业,专门做各种数学用表的计算,如测量和天文领域的三角函数表.对 ...