ThinkPHP文档参考地址:https://www.shouce.ren/api/view/a/12706
首先使用Composer安装think-captcha扩展包:
composer require topthink/think-captcha
ThinkPHP 完整版的 就不需要下载了
验证码配置
'captcha' => [
// 验证码字符集合
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
// 验证码字体大小(px)
'fontSize' => 16,
// 是否画混淆曲线
'useCurve' => false,
// 验证码图片高度
'imageH' => 30,
// 验证码图片宽度
'imageW' => 120,
// 验证码位数
'length' => 4,
// 验证成功后是否重置
'reset' => true
],
实现点击随机生成验证码:
οnclick=“this.src=’{:captcha_src()}?’+Math.random()”
显示验证码图片
src="{:captcha_src()}"
<input type="text" id='verify' class="pull-left" name="yanzhengma" placeholder="这里输入验证码">
<img class="pull-right" src="{:captcha_src()}" onclick="this.src='{:captcha_src()}?'+Math.random()">
login控制器 接收处理登录:
<?php
namespace app\admin\controller;
use app\admin\model\Manager;
use think\Controller;
use think\Validate;
class Login extends Controller
{
function login(){
//如果没接收post请求 就跳转
if($this->request->isPost()){
$input = input();
//验证规则
$rult = [
'username|用户名' => 'require',
'password|密码' => 'require',
'yanzhengma|验证码' => 'require|captcha'
];
//生成验证起
$validate = new Validate($rult);
//检测是否成功
if(!$validate->check($input)){
$this->error($validate->getError());
}
//密码加密
$str = encrypt_password($input['password']);
//sql语句
$res = Manager::where('username','=',$input['username'])->where('password','=',$str)->find();
if($res != null){
//登录成功
session('user',['username' => $input['username'],'password'=>$str]);
return $this->success('登录成功!','admin/goods/index');
}else{
//登录失败
return $this->error('登录失败!','login');
}
}else{
//不启用 模版布局 功能
$this->view->engine->layout(false);
return view();
}
}
}
密码加密工具函数:
common.php
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------
// 应用公共文件
if(!function_exists('encrypt_password')){
function encrypt_password($string){
$salt = 'sane1m41kmfds3prrf';
return md5($salt.md5($string));
}
}