1.输入验证码
首先下载验证码的扩展包,并放在下图的位置
在html前台页面写法如下
<div class="loginbox-textbox">
<input class="form-control" placeholder="code" name="code" style="margin:10px 0;width:80px;float:left;" type="text">
<img style="float:left; cursor:pointer;" src="{:captcha_src()}" alt="captcha" onclick="this.src='{:captcha_src()}?'+Math.random();" />
</div>
在app下的config.php最下面根据文档,配置如下图
验证的地方和函数如下图 利用model中的Admin.php进行验证
2.填写已有账号密码登陆系统
首先在model(用于连接数据库)文件中的Admin.php中创建函数login($data);
如下
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class Admin extends Model
{
public function login($data){//在登陆端接受用户输入的信息
$captcha = new \think\captcha\Captcha();
if (!$captcha->check($data['code'])) {//验证码验证
return 4;
}
$user=Db::name('admin')->where('username','=',$data['username'])->find();//读取数据库中用户名和密码(这里的密码默认没有被md5加密)
if($user){//如果user存在
if($user['password'] == ($data['password'])){//如果密码相等
session('username',$user['username']);//将登陆信息写入session
session('uid',$user['id']);
return 3; //信息正确
}else{
return 2; //密码错误
}
}else{
return 1; //用户不存在
}
}
}
在controller文件夹中创建Login.php控制器,如下代码
<?php
namespace app\Admin\controller;
use think\Controller;
use app\admin\model\Admin;//接受来自model中Admin的函数
class Login extends Controller
{
public function index()
{
if(request()->isPost()){//如果是post获取数据则
$admin=new Admin();
$data=input('post.');//令输入的数据存入$data数组中
$num=$admin->login($data);//引用model中admin/login函数
if($num==3){
$this->success('信息正确,正在为您跳转...','index/index');//成功就跳转主页
}elseif($num==4){
$this->error('验证码错误');
}
else{
$this->error('用户名或者密码错误');
}
}
return $this->fetch('login');//没有填写或其他错误重新加载login页面
}
}
在view/login/login.htm中代码如下
<div class="loginbox-textbox">
<input class="form-control" placeholder="password" name="password" type="password">
</div>
<div class="loginbox-textbox">
<input class="form-control" placeholder="code" name="code" style="margin:10px 0;width:80px;float:left;" type="text">
<img style="float:left; cursor:pointer;" src="{:captcha_src()}" alt="captcha" onclick="this.src='{:captcha_src()}?'+Math.random();" />
</div>
<div class="loginbox-submit">
<input class="btn btn-primary btn-block" value="Login" type="submit">
</div>
3.登录系统(未登录直接跳转至登录页)
如果用户知道主页域名,绕过登陆页直接加载主页怎么办?
这时候需要一个父类,当主页的各种驱动器都继承这个父类,用于在打开该页面时进行登陆检查,
如下图所示
Base.php控制器如下
利用session检查有没有登陆
4.系统显示登录信息-退出系统-修改密码
在系统登录信息中利用{$Request.session.username},得到登陆名称
在”退出系统”common/top.html中代码如下
退出登陆调用的是controller/Admin.php控制器中的logout()函数
public function logout(){
session(null);//清空session
$this->success('退出成功!','Login/index');
}
}