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

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

内容简介:微信实验十一、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' => '两次密码必须一致'     ]; }

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

查看所有标签

猜你喜欢:

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

Spring in Action

Spring in Action

Craig Walls / Manning Publications / 2011-6-29 / USD 49.99

Spring in Action, Third Edition has been completely revised to reflect the latest features, tools, practices Spring offers to java developers. It begins by introducing the core concepts of Spring and......一起来看看 《Spring in Action》 这本书的介绍吧!

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

URL 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具