```
~~~
class base extends BaseController
{
protected $user;
function __construct()
{
header("Content-type: application/json");
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, HEAD,OPTIONS, POST");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding, X-Requested-With, Origin,token,account");
$headers=$this->get_all_headers();
$check_rule=[
'index/login',
];
$controller_name=request()->controller();
$method_name=request()->action();
$url=strtolower($controller_name."/".$method_name);
if(!in_array($url,$check_rule)){
if(empty($headers['token'])){
$this->json_error("非法操作",505);
}else{
$token=$headers['token'];
$jwt = new Jwts();
if($jwt->checkToken($token)){
$jwt = new Jwts();
$info=$jwt->tokenInfo($token);
$uid=$info->jti->id;
$user_info=Db::table('admin')->where(['token'=>$token,'id'=>$uid])->find();
if(empty($user_info)){
$this->json_error("非法操作",505);
}
if($user_info['token_expire']<time()){
$this->json_error("登录失效,请重新登录",505);
}
if($user_info['status']!=1){
$this->json_error("账户被冻结",505);
}
$this->user=$user_info;
}else{
$this->json_error("非法操作",505);
}
}
}
}
/**
* 获取自定义的header数据
*/
protected function get_all_headers()
{
// 忽略获取的header数据
$ignore = array('host', 'accept', 'content-length', 'content-type');
$headers = array();
foreach ($_SERVER as $key => $value) {
if (substr($key, 0, 5) === 'HTTP_') {
$key = substr($key, 5);
$key = str_replace('_', ' ', $key);
$key = str_replace(' ', '-', $key);
$key = strtolower($key);
if (!in_array($key, $ignore)) {
$headers[$key] = $value;
}
}
}
return $headers;
}
/**
* json失败返回
* @param string $msg
* @param array $data
* @param int $code
*/
public function json_error($msg = '失败', $code = 0)
{
exit(json_encode(['code' => $code, 'msg' => $msg], JSON_UNESCAPED_UNICODE));
}
/**
* json成功返回
* @param array $data
* @param string $msg
* @param int $status
*/
public function json_success($data = [], $msg = '成功', $status = 200)
{
if (is_string($data)) {
$msg = $data;
$data = [];
}
exit(json_encode(['code' => $status, 'msg' => $msg, 'data' => $data], JSON_UNESCAPED_UNICODE));
}
}
~~~
```
- 面试
- php
- laravel
- 安装
- 创建数据
- 创建控制器
- 错误
- 权限认证
- 图形验证码
- 管理员
- 无限分类
- 视频播放
- 推流
- pc页面
- thinkphp5
- 表单提交安全验证
- crontab
- 获取下级所有数据
- 过滤敏感词
- 二维码
- 邀请码
- jwt token
- 笛卡尔
- 高并发解决优化
- 设置多语言
- 计算经纬度两点距离
- 分片上传
- centos swoole
- 查看swoole版本
- centos 安装 redis
- 把整数随机分成n份或者红包
- 生成随机字符串
- 获取上级
- 宝塔搭建nginx推拉流
- 生成二维码海报
- 二维数组去重
- 经纬度 ---边距 和判断是不是范围内
- workerman
- 扩展
- redis
- mysql
- mysql 主从复制
- 定位问题语句
- 列的选择规则
- Enum介绍
- 索引介绍
- 延迟关联
- in 查询陷阱
- limit 优化
- 事务
- 读写分离
- mysql 权限错误
- mysql计算距离
- mysql数据导出导入
- 索引失效
- mysql 语句技巧
- linux
- 配置nginx 高可用
- Nginx内核参数优化
- 配置优化
- nginx-keepalived实现高可用负载
- lvs+keepalived
- centos5关闭防火墙
- nginx操作
- linux操作
- mysql 安装
- php
- 安装phpadmin
- php7安装mongodb
- 查看php位置
- 查找开启的进程端口
- 守护进程
- centos安装php7.2
- centos 错误解决
- 安装php7错误
- mysql 错误
- 支付宝支付
- html
- js 倒计时
- go vscode 配置
- go util
- 获取两个数之间随机数
- java
- lambda
- 随机抽取
- lombok
- springboot
- 常见注解
- 接受参数常用注解
- 文件上传
- 上传错误日志拦截
- 拦截器
- 定时任务
- mybatis
- 关联查询
- 全局配置
- 缓存
- git
- 微信相关
- 体现到零钱
- 服务商转账
- 公众号小程序相关
- 小程序二维码
- svn
- layui