首先写好前端的登录注册页面,建好数据库!

数据库结构截图

配置数据库信息

配置数据库信息

视图输出字符串内容替换

视图输出字符串内容替换

附上代码

'__STYLE__'=>'/static/index',

为了方便我写了个基类,方便继承我自己写的东西

在applicationindexcontroller目录下新建Common.php,主要用来实现json转换,session验证等业务逻辑。代码如下:

<?php
namespace app\index\controller;

use think\Controller;
use think\Session;

class Common extends Controller {

    public function _initialize()
    {
        if (!Session::has("nickname")){
            return $this->redirect("login/login");
        }
        parent::_initialize(); // TODO: Change the autogenerated stub
    }


    /**
     * 当出现业务逻辑出错时的返回
     * @param $code
     * @param $msg
     * @param array $data
     * @return false|string
     */
    public function jsonData($code,$msg,$data=[]){
        return $this->jsonResponce($code,$msg,$data);
    }
    /**
     * 成功默认返回
     * @param array $data
     * @return false|string
     */
    public function jsonSuccessData($data=[]){
        return $this->jsonResponce(1,'success',$data);
    }

    /**
     * @param $code
     * @param $msg
     * @param $data
     * @return false|string
     */
    public function jsonResponce($code,$msg,$data){
        $content=[
            'code'=>$code,
            'msg'=>$msg,
            'data'=>$data
        ];
        return json($content);
    }
}

common代码

添加控制器

在applicationindexcontroller目录下新建Login.php,主要用来实现登录功能的业务逻辑。代码如下:

<?php
namespace app\index\controller;


use think\Controller;
use think\Request;
use think\Session;
use think\Validate;

class Login extends Controller {


    /**
     * 当出现业务逻辑出错时的返回
     * @param $code
     * @param $msg
     * @param array $data
     * @return false|string
     */
    public function jsonData($code,$msg,$data=[]){
        return $this->jsonResponce($code,$msg,$data);
    }
    /**
     * 成功默认返回
     * @param array $data
     * @return false|string
     */
    public function jsonSuccessData($data=[]){
        return $this->jsonResponce(1,'success',$data);
    }

    /**
     * @param $code
     * @param $msg
     * @param $data
     * @return false|string
     */
    public function jsonResponce($code,$msg,$data){
        $content=[
            'code'=>$code,
            'msg'=>$msg,
            'data'=>$data
        ];
        return json($content);
    }

    public function login(){
        if (Session::has("nickname")){
            $this->redirect("index/index");
        }
        return view("");
    }
    public function doLogin(Request $request){
        $data=$request->param();
        $rule = [
            'name' => 'require|max:12',
            'pwd' =>'require|max:12'
        ];
        $msg = [
            'name.require' => '账号不能为空',
            'name.max' =>'账号长度不能超过12个字符',
            'pwd.require' => '密码不能为空',
            'pwd.max' =>'密码长度不能超过12个字符',
        ];
        $validate = new  Validate ($rule, $msg);
        $res = $validate->check($data);
        if (!$res) {
           return $this->jsonData("0",$validate->getError(),"error");
        }
        else{
            $model=model("User");
            $check=$model->login($data);
            return $check;
        }
    }
}

创建登录模型

在applicationindexmodel目录下新建User.php,主要用来实现登录功能的模型层业务逻辑。代码如下:

<?php
namespace app\index\model;

use think\Db;
use think\Model;

class User extends Model {

    /**
     * 当出现业务逻辑出错时的返回
     * @param $code
     * @param $msg
     * @param array $data
     * @return false|string
     */
    public function jsonData($code,$msg,$data=[]){
        return $this->jsonResponce($code,$msg,$data);
    }
    /**
     * 成功默认返回
     * @param array $data
     * @return false|string
     */
    public function jsonSuccessData($data=[]){
        return $this->jsonResponce(1,'success',$data);
    }

    /**
     * @param $code
     * @param $msg
     * @param $data
     * @return false|string
     */
    public function jsonResponce($code,$msg,$data){
        $content=[
            'code'=>$code,
            'msg'=>$msg,
            'data'=>$data
        ];
        return json($content);
    }


    public function login($data){
        $select=Db::table("user")->where("account",$data['name'])->find();
        if ($select){
            $pwd=Db::table("user")->where("account",$data['name'])->value("pwd");
            if (password_verify($data['pwd'],$pwd)){
                $nickname=Db::table("user")->where("account",$data['name'])->value("name");
                session("nickname",$nickname);
                return $this->jsonSuccessData("登录成功");
            }else{
                return $this->jsonData("0","账号或密码错误","error");
            }

        }else{
            return $this->jsonData("0","账号不存在","error");
        }
    }

    public function listAll(){
        $data=Db::table("User")->paginate(1);
        return $data;
    }

    public function regist($data){
        $account=Db::table("user")->where("account",$data['account'])->find();
        if ($account){
            return $this->jsonData("0","账号重复请更改","error");
        }else{
            $nickname=Db::table("user")->where("name",$data['nickname'])->find();
            if ($nickname){
                return $this->jsonData("0","昵称重复请更换","error");
            }else{
             $passwordHash = password_hash($data['pass'], PASSWORD_DEFAULT); //哈希加密
                $time=time();
                $insertData=['account'=>$data['account'],
                    'name'=>$data['nickname'],
                    'pwd'=>$passwordHash,
                    'time'=>$time
                ];
                $insert=Db::table('user')->insert($insertData);
                if ($insert){
                    return $this->jsonSuccessData("注册成功");
                }
                else{
                    return $this->jsonData("0",'注册失败,请联系管理员',"error");
                }
            }
        }

    }

}

用户注册实现逻辑

<?php
namespace app\index\controller;

use think\Request;
use think\Validate;

class Admin extends Common{
    public function admin_list(){
        $model=model("User");
        $data=$model->listAll();
        $this->assign("data",$data);
        return $this->fetch();
    }
    public function admin_add(){
        return view("");
    }
    public function add_do(Request $request){
        $d=$request->param();
        $data=$d['data'];
        $rule = [
            'account' => 'require|max:12|min:5',
            'nickname' =>'require|max:12|min:5',
             'pass' => 'require|max:12|min:6|confirm:repass',

        ];
        $msg = [
            'account.require' => '账号不能为空',
            'account.max' =>'账号长度不能超过12个字符',
            'account.min' =>'账号长度不能小于5个字符',
            'nickname.require' => '昵称不能为空',
            'nickname.max' => '昵称长度不能超过12个字符',
            'nickname.min' => '昵称长度不能小于5个字符',
            'pass.require' =>'密码不能为空',
            'pass.max' =>'密码长度不能超过12个字符',
            'pass.min' =>'密码长度不能小于6个字符',
            'pass.confirm' =>'两次密码不一致',
        ];
        $validate = new Validate($rule, $msg);
        $res = $validate->check($data);
        if (!$res) {
            return $this->jsonData("0",$validate->getError(),"error");
        }
        else{
            $model=model("User");
            $select=$model->regist($data);
            return $select;
        }


    }
}

退出登录

退出登录代码

public function lost_session(){
    Session::delete("nickname");
    return $this->redirect("login/login");
}

我是用的x-admin部署的

附上链接

x-admin2.2下载地址

另附上TP5.0在线手册

TP5.0看云在线手册


最后

中国加油!武汉加油!重庆挺住!
致敬在一线所有挡在我们前面的英雄们 你们辛苦了!