## 说明
>[info]#### 控制器,主要是对操作进行处理,并不进行任何数据操作,逻辑处理。
在这之前,我们有两个文件的代码是需要先写好的。
>[info] 一个是在控制器文件夹里面的 ```Common.php```,这是用来,检测当前域里面是否有 Seesion,
有的话就有进入 index界面的权限,没有的话,就是跳转到登录页面,这是一种安全考虑。
位置如图(两个文件都需要创建并且放入指定目录):
![](https://box.kancloud.cn/6e6c566445043f83155ba433b5891ee5_402x383.png)
代码如下:
```
<?php
/**
* Created by PhpStorm.
* User: ye21st
* Email: ye21st@gmail.com
* Date: 2018/1/19
* Time: 11:52
*/
namespace app\index\controller;
use think\Controller;
/**
* 公共控制器
* Class Common
* @package app\index\controller
*/
class Common extends Controller
{
// 前置方法
protected function initialize()
{
if(!session('id') || !session('name')){
$this->error('您尚未登录系统',url('index/login/index'));
}
}
}
```
>[info] 另一个就是一个返回码,控制器通过得到的返回码去进行一些相应的操作。
代码如下:
```
<?php
/**
* Created by PhpStorm.
* User: ye21st
* Email: ye21st@gmail.com
* Date: 2018/1/17
* Time: 14:10
*/
namespace app\index\controller;
/**
* 返回码
* Class ResultCode
* @package app\index\controller
*/
class ResultCode
{
static public $LOGIN_SUCCESS = 1000; // 登录成功
static public $USER_DOES_NOT_EXIST = 1001; // 用户名不存在
static public $PASSWORD_ERROR = 1002; // 密码错误
}
```
>[success] 到了这里,我们在登录操作之前,我们先创建好首页的控制器,用来展示首页。
位置如下(application\index\controller\Index.php),如下图所示:
![](https://box.kancloud.cn/1a922f8b2758cef7c7e24ebadf830962_380x226.png)
代码如下:
```
<?php
namespace app\index\controller;
/**
* Index 控制器
* Class Index
* @package app\index\controller
*/
class Index extends Common
{
/**
* 登录首页
* @return mixed
*/
public function index()
{
$this->assign('name', 'thinkphp');
return $this->fetch();
}
}
```
>[info] 最后,我们来创建登录控制器。
位置如下(application\index\controller\Login.php),如下图所示:
![](https://box.kancloud.cn/ee2b5bfb139efec24f3d1a2ec31d04c1_376x221.png)
代码如下:
```
<?php
/**
* Created by PhpStorm.
* User: ye21st
* Email: ye21st@gmail.com
* Date: 2018/1/19
* Time: 11:52
*/
namespace app\index\controller;
use app\index\model\User as UserModel;
use think\captcha\Captcha;
use think\Controller;
use think\facade\Request;
use think\facade\Session;
/**
* 登录控制器
* Class Login
* @package app\index\controller
*/
class Login extends Controller
{
/**
* 登录操作
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function index(){
// 判断请求是否是 POST 请求
if ( Request::isPost() ){
// 获取用户登录时候的用户名、密码、验证码
$username = $this -> request -> param('username');
$password = $this -> request -> param('password');
$code = $this -> request -> param('code');
// 检测输入的验证码是否正确,$code 为用户输入的验证码字符串
$captcha = new Captcha();
if( !$captcha->check($code))
{
$this->error('验证码错误!');
}
$index = new UserModel();
$result = $index -> login($username,$password);
/**
* 通过获得的条件去进行不同的操作
*/
switch ($result){
case ResultCode::$LOGIN_SUCCESS:
$this -> success('用户登录成功!',url('index/index/index'));
break;
case ResultCode::$USER_DOES_NOT_EXIST:
$this->error('用户名不存在!');
break;
case ResultCode::$PASSWORD_ERROR:
$this->error('密码错误,请确认后再次输入!');
break;
}
}
return $this->fetch();
}
/**
* 生成验证码
* @return \think\Response
*/
public function verify()
{
// 验证码配置
$config = [
// 验证码字体大小
'fontSize' => 20,
// 验证码位数
'length' => 4,
// 宽度
'imageW' => 360,
// 高度
'imageH' => 60,
// 关闭验证码杂点
'useNoise' => false,
];
$captcha = new Captcha($config);
return $captcha->entry();
}
/**
* 安全退出
*/
public function logout(){
Session::pull('id');
Session::pull('name');
$this->redirect('index/login/index');
}
}
```
>[success] 到了这里,我们的代码基本都书写完了,功能的话,也是能够正常使用的。
- 序言
- 文档更新状态
- 错误提交
- 零、前期准备
- (1)PHP开发环境
- (2)PHP开发工具
- (3)数据库相关
- (4)ThinkPHP5.1完全开发手册
- (5)URL优化
- 一、用户登录
- (1)数据表设计
- (2)项目配置
- (3)MVC - V(视图)
- (4)MVC - M(模型)
- (5)MVC - C(控制器)
- (6)源码下载
- 二、无限极分类
- (1)数据表设计
- (2)项目配置
- (3)MVC - V(视图)
- (4)MVC - M(模型)
- (5)验证器
- (6)MVC - C(控制器)
- (7)源码下载
- 三、TP5.1开发API接口,实现前后端分离
- (1)数据表设计
- (2)项目配置
- (3)HTML纯静态页面
- (4)MVC - M(模型)
- (5)MVC - C(控制器)
- (6)源码下载
- 四、TP5调用 API 接口
- (1)项目配置
- (2)MVC - V(视图)
- (3)MVC - C(控制器)
- (4)源码下载
- 五、文章分页以及修改分页样式
- (1)数据表设计
- (2)项目配置
- (3)MVC - V(视图)
- (4)MVC - M(模型)
- (5)MVC - C(控制器)
- (6)自定义分页类
- (7)源码下载
- 六、修改默认跳转页面
- (1)数据表设计
- (2)项目配置
- (3)MVC - V(视图)
- (4)MVC - M(模型)
- (5)验证器
- (6)MVC - C(控制器)
- (7)自定义跳转页面
- (8)源码下载
- 七、整合markdown在线编辑器
- (1)数据表设计
- (2)项目配置
- (3)MVC - V(视图)
- (4)MVC - C(控制器)
- (5)源码下载
- 八、整合PHPExcel导入导出功能
- (1)数据表设计
- (2)项目配置
- (3)MVC - V(视图)
- (4)MVC - C(控制器)
- (5)源码下载
- 九、整合Echarts
- (1)数据表设计
- (2)项目配置
- (3)MVC - V(视图)
- (4)MVC - C(控制器)
- (5)源码下载
- 十、接入AntV G2(可视化图形)
- (1)数据表设计
- (2)项目配置
- (3)MVC - V(视图)
- (4)MVC - C(控制器)
- (5)源码下载