登录时,没有图形验证码的话,很容被机器人进行模拟登录,对网站安全有很大的威胁。因此,验证码是登录功能所必须的。下面,我们就给我们的登录功能,加上验证码。
## 下面功能相关的目录
![](https://box.kancloud.cn/aa86edfbe29d51f1f6e4ce4411e998ac_301x746.jpg)
首先使用Composer安装think-captcha扩展包,通过命令行,进入 D:\www\phper。(您根据实际情况处理)
~~~
composer require topthink/think-captcha
~~~
完整安装之后,我们在 application 下的 config.php 中添加如下配置:
~~~
<?php
//配置文件
return [
'captcha' => [
// 验证码字符集合
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
// 验证码字体大小(px)
'fontSize' => 25,
// 是否画混淆曲线
'useCurve' => true,
// 验证码图片高度
'imageH' => 30,
// 验证码图片宽度
'imageW' => 100,
// 验证码位数
'length' => 5,
// 验证成功后是否重置
'reset' => true
]
];
~~~
>[danger] 验证码的配置必须加到 applocation 下面的config 中才可以准确的控制。
在登录页面中,index\view\login\index.html 中,密码下面,加入如下的代码:
~~~
<div class="form-group">
<label>验证码</label>
<input type="text" placeholder="请输入验证码" class="form-control" name="captcha">
<img src="{:captcha_src()}" alt="captcha" onclick="javascript:this.src='{:captcha_src()}?tm='+Math.random();" style="cursor: pointer"/>
</div>
~~~
>[info] 注意此处的代码: onclick="javascript:this.src='{:captcha_src()}?tm='+Math.random();" 段代码是用来完成,点击验证码图案,换一个验证码的功能。
然后修改 doLogin 方法,添加验证码验证的处理。首先我们要在 Login.php 的开的头加入:
~~~
use think\captcha;
~~~
后面的 captcha_check 验证码检测,才能正确的使用。
~~~
// 处理登录逻辑
public function doLogin()
{
$param = input('post.');
if(empty($param['user_name'])){
$this->error('用户名不能为空');
}
if(empty($param['user_pwd'])){
$this->error('密码不能为空');
}
if(empty($param['captcha'])){
$this->error('验证码不能为空');
}
// 处理验证码
if(!captcha_check($param['captcha'])){
$this->error('验证码错误');
};
// 验证用户名
$has = db('users')->where('user_name', $param['user_name'])->find();
if(empty($has)){
$this->error('用户名密码错误');
}
// 验证密码
if($has['user_pwd'] != md5($param['user_pwd'])){
$this->error('用户名密码错误');
}
// 记录用户登录信息
cookie('user_id', $has['id'], 3600); // 一个小时有效期
cookie('user_name', $has['user_name'], 3600);
$this->redirect(url('index/index'));
}
~~~
至此,验证码添加完成。
![](https://box.kancloud.cn/4b6351059e22d80c8d03cf28f2a02f8c_402x423.jpg)
- 前言
- 安装thinkphp5
- 快速搭建前后台模块
- 系统登录的实现
- 图形验证码的实现
- 使用layer完成用户增删改查
- 用户列表的展示
- 增加用户
- layer弹出层的使用1
- layer弹出层的使用2
- 编辑用户
- 删除用户
- 重构用户列表
- laypage分页插件的应用
- laytpl模板引擎的应用
- 完成重构
- 其他layer系列插件
- upload实现文件图片的异步上传
- laytree树形菜单
- 省市县三级联动
- datable的应用
- UEditor的使用
- 新闻小爬虫的实现
- 页面静态化的实现
- 通过phpexcel导入数据
- ztree树形菜单
- 生成二维码
- 权限设计
- 从rbac到auth
- auth前的准备工作
- auth权限设计
- auth的最终呈现
- php常用函数合集
- 生成随机IP
- 身份证验证
- 对象转换成数组
- 无限极分类
- 通过ip定位城市
- 源码下载