thinkphp5的入门学习(3)系统登录的相关设置

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');
    }
}

猜你喜欢

转载自blog.csdn.net/qq_16546829/article/details/78172582