美文网首页ThinkPHP微信PHP开发ThinkPHP
微信实验十一、ThinkPHP5.0登录、验证及源码下载

微信实验十一、ThinkPHP5.0登录、验证及源码下载

作者: chenxhjeo | 来源:发表于2017-04-23 21:24 被阅读884次

    (>>>>在公众号中输入文章最后彩蛋即可获取源代码)

    开源项目:https://github.com/chenxhjeo,个人博客:http://blog.csdn.net/u013487761

    技术QQ群名称:豆豆咨询,群号:625686304

    微信公众号名称:豆豆咨询,微信公众号:douAsk

    初建日期:2017.04.23

    一、实验目的

    1、掌握ThinkPHP5.0登录与验证原理,实现用户登录功能。

    二、实验内容

    1、建立ThinkPHP5.0用户登录与验证功能页面。

    三、实验步骤及过程

    ThinkPHP登录是应用系统网站的一个基本功能。我们借鉴nango代码,增加了一些用户输入验证功能,实现了用户登录功能。

    1、创建登录界面

    我们下载nango开源项目文件,创建了weixin模块,并增加了validate文件夹的AdminLogin.php文件,http://127.0.0.1/noneCms/public/index.php/weixin/login/index是用户登录入口,如图所示。

    实验流程如下所示:

    1)安装程序:http://127.0.0.1/noneCms/public/install安装数据库程序,可以参看实验十的内容,不同的是可以设置数据库的用户名和密码,最好采用phpStudy环境下安装数据库;

    2)创建weixin模块:在根目录下使用命令php think build –module weixin,创建weixin模块;

    3)创建控制类及方法:建立Login控制类及index方法,实现登录控制类。

    4)创建view层的显示页面以及验证类。

    2、关键代码解析

    Login.php为控制模块文件,即通过http://127.0.0.1/noneCms/index.php/weixin/login/index访问网站的用户登录页面,调用weixin模块的login控制器的index方法。该文件还可以采用不同的方法实现引导用户登录页面,我们采用weixin模块,以login控制器的index方法引导登录页面显示,以login控制类的login方法完成登录功能。

    1)Login.php文件

    Login.php是login控制器文件,其中index方法主要完成登录页面显示,login完成用户密码验证及输入的验证,代码如下:

    namespace app\weixin\controller;

    use think\Controller;

    use think\Db;

    use think\Request;

    use think\Session;

    class Login extends Controller

    {

    //登录界面

    public function index(){

    //验证是否登录成功

    if (Session::has('userinfo')) {

    $this->redirect('index/index');

    }

    return $this->fetch();//按照系统的默认规则定位模板文件到:[模板文件目录]/当前控制器名(小写+下划线)/当前操作名(小写).html,即view/login_index.html

    }

    //登录操作

    public function login(){

    if(!request()->isPost()){

    $this->redirect('index/index');

    }

    $name = input('post.username');

    $passwd = input('post.password');

    $captcha = input('post.captcha');

    $data1 = [

    'username'=>$name,

    'password'=>$passwd

    ];

    $validate = \think\Loader::validate('AdminLogin');

    if(!$validate->check($data1)){//验证数据

    exit(json_encode(array('status' => 0, 'msg' => $validate->getError())));

    }

    if (!$name || !$passwd) {

    exit(json_encode(array('status' => 0, 'msg' => '用户名和密码不能为空')));

    }

    if(!captcha_check($captcha)){

    exit(json_encode(array('status' => 0, 'msg' => '请输入正确的验证码')));

    }

    $info = Db::name('admin')->where('username',$name)->find();

    $md5_passwd = md5(md5(trim($passwd)).$info['encrypt']);

    if (!$info || $md5_passwd != $info['password']) {

    exit(json_encode(array('status' => 0, 'msg' => '用户名或密码错误,请重新输入')));

    }

    if ($info['islock'] == 1) {

    exit(json_encode(array('status' => 0, 'msg' => '您的账户已被锁定,请联系超级管理员')));

    }

    //写入日志

    $data['ip'] = $login['loginip'] = request()->ip();

    $data['userid'] = $info['id'];

    $data['datetime'] = $login['logintime'] = time();

    Db::name('log')->insert($data);

    Db::name('admin')->where('id',$info['id'])->update($login);

    //登入成功,存入session

    Session::set('userinfo',['name' => $name,'id' => $info['id'],'login_time' => time()]);

    exit(json_encode(array('status' => 1, 'msg' => '登录成功', 'url' => url('index/index'))));

    }

    }

    2)validate/AdminLogin.php文件

    该文件辅助Login控制器的login方法验证用户登录数据,在Login.php文件中采用代码$validate = \think\Loader::validate('AdminLogin');调用AdminLogin验证器验证。

    AdminLogin.php文件如下所示。

    namespace app\weixin\validate;

    use think\Validate;

    class AdminLogin extends Validate {

    protected $rule =[

    'username'=> 'require|max:25|min:4',

    'email' => 'email',

    'password' => 'require|max:25|min:6',

    'repassword'=>'repassword'

    ];

    protected $message=[

    'username.require' => '用户名必须',

    'username.max'=> '用户名最多不能超过25个字符',

    'username.min'=> '用户名最少4个字符',

    'password.require'=> '密码必须',

    'password.min'=> '密码长度至少六位',

    'email'=> '邮箱格式错误',

    //'repassword.require' => '确认密码必须',

    'repassword.confirm' => '两次密码必须一致'

    ];

    }

    四、技术服务

    1、如果有疑问或者需要帮助,请加入QQ群(群名称:豆豆咨询,群号:625686304);或者公众号douAsk,公众号名称为“豆豆咨询”。扫描以下二维码,关注“豆豆咨询”

    技术QQ群名称:豆豆咨询,群号:625686304

    微信公众号名称:豆豆咨询,微信公众号:douAsk

    彩蛋号:1208。

    相关文章

      网友评论

        本文标题:微信实验十一、ThinkPHP5.0登录、验证及源码下载

        本文链接:https://www.haomeiwen.com/subject/jyoyzttx.html