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

栏目: PHP · 发布时间: 6年前

内容简介:微信实验十一、ThinkPHP5.0登录、验证及源码下载

一、实验目的

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是用户登录入口,如图所示。

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

实验流程如下所示:

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();     }     //登录操作     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' => '两次密码必须一致'     ]; }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

解构产品经理:互联网产品策划入门宝典

解构产品经理:互联网产品策划入门宝典

电子工业出版社 / 2018-1 / 65

《解构产品经理:互联网产品策划入门宝典》以作者丰富的职业背景及著名互联网公司的工作经验为基础,从基本概念、方法论和工具的解构入手,配合大量正面或负面的案例,完整、详细、生动地讲述了一个互联网产品经理入门所需的基础知识。同时,在此基础上,将这些知识拓展出互联网产品策划的领域,融入日常工作生活中,以求职、沟通等场景为例,引导读者将知识升华为思维方式。 《解构产品经理:互联网产品策划入门宝典》适合......一起来看看 《解构产品经理:互联网产品策划入门宝典》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具