单一登录:
一下代码是根据token字段来判断用户是否在别的地方登录:
/**
* 退出登录处理
*Method loginOut
* @return \think\response\Redirect
*/
public function loginOut()
{
Session(null);
return redirect('admin/login/login');
}
//返回登录页面
public function login()
{
if (session('userInfo') == false) {
return view('login/login');
} else {
$userInfo = session('userInfo');
$data = User::where('id',$userInfo['id'])->find();
if ($userInfo['token'] != $data['token']) {
return redirect(url('admin/login/login'));
} else {
User::where('id', $userInfo['id'])->update(['token' => $userInfo['token']]);
return redirect(url('test512/sign/index'));
}
}
}
//登录处理
public function doLogin(Request $request)
{
$data = $request->post();
$data['password'] = md5(md5($data['password']));
$res = User::where('username', $data['username'])->find();
if ($res == false) {
$this->error('账号有误', 'admin/login/login');
} else {
if ($res['password'] != $data['password']) {
$this->error('密码有误', 'admin/login/login');
}
$res['token'] = rand().time();//生成token
User::where('id',$res['id'])->update(['token'=>$res['token']]);
session('u_id',$res['id']);
session('userInfo',$res);
return redirect(url('test512/sign/index'));
}
//在登录跳转完成的首页
if (!session('userInfo'))
{
return redirect('admin/login/login');
}else {
$res = Session('userInfo');
$item = User::where('id',$res['id'])->find();
if ($item['token']!=$res['token']){
return redirect(url('admin/login/loginout'));
}
}
}
无限级分类
/**
* 无限级分类
*Method treelevel
* @param array $data
* @param int $pid
* @param string $html
* @param int $level
*/
//无限极分类
public function get_tree_list($data,$pid=0,$html="--",$level=1){
//定义静态空数组
static $arr = [];
//循环权限的数据
foreach ($data as $v){
//判断pid 是否等于$pid 等于则为顶级
if($v['pid'] == $pid){
$v['html'] = str_repeat($html,$level);
$v['level'] = $level+1;
$arr[] = $v;
$this->get_tree_list($data,$v['id'],$html,$v['level']);
}
}
return $arr;
}
单一登录处理
目录
文件上传阿里OSS云储存
先安装云存储插件
composer require aliyuncs/oss-sdk-php
if (!function_exists('uplodeOss')) {
function uplodeOss($file){
$path = Filesystem::disk('public')->putFile('upload', $file);
//图片路径,Filesystem::getDiskConfig('public','url')功能是获取public目录下的storage,
$ossPath = substr(strrchr($path, "/"), 1);
//结果是 $picCover = storage/upload/20200825/***.jpg
$picCover = '/' . str_replace('\\', '/', $path);
//上传OSS 并获取阿里云OSS地址
$image = aliyun($ossPath, '', '', 'gzs123');
if($image){
return $image;
}
}
}
if (!function_exists('aliyun')) {
function aliyun($savePath,$category='',$isunlink=false,$bucket=""){
$accessKeyId = Config::get('app.aliyun_oss.accessKeyId');//去阿里云后台获取秘钥
$accessKeySecret = Config::get('app.aliyun_oss.accessKeySecret');//去阿里云后台获取秘钥
$endpoint = Config::get('app.aliyun_oss.endpoint');//你的阿里云OSS地址
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
// 判断bucketname是否存在,不存在就去创建
if( !$ossClient->doesBucketExist($bucket)){
$ossClient->createBucket($bucket);
}
$category=empty($category)?$bucket:$category;
$savePath = str_replace("\\","/",$savePath);
$object = $category.'/'.$savePath;//想要保存文件的名称
$file = './upload\\'.$savePath;//文件路径,必须是本地的。
try{
$ossClient->uploadFile($bucket,$object,$file);
if ($isunlink==true){
unlink($file);
}
}catch (OssException $e){
$e->getErrorMessage();
}
$oss=Config::get('aliyun_oss.url');
$web = "http://gzs123.oss-cn-shanghai.aliyuncs.com";
return $web.$oss."/".$object;
}
}
/**
* 保存新建的资源
*
* @param \think\Request $request
* @return \think\Response
*/
public function save(Request $request)
{
$data = $request->post();
// 获取表单上传文件 例如上传了001.jpg
$file = request()->file('images');
// 移动到框架应用根目录/uploads/ 目录下
$info = $file->move( 'uploads');
if($info) {
// 成功上传后 获取上传信息
// 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
$img = $info->getSaveName();
}
$obj = new TPOSS();
$rest = $obj->uploadOssFile('yw666',$img);
$data['images']=$rest['info']['url'].'?x-oss-process=style/400-300';
//添加数据
SignModel::create($data,true);
return redirect('sign/index');
}
$commentData->join( join: 'image ' ,condition: " image.i_id = user.id')
->where( field: ' comment.aid' ,$id.)->select();
= Comment::join( join: 'user', condition: "user.id = comment.uid')
$commentData = $this->get_tree_list($commentData);
public function get_tree_list($data, $pid=0)
{
static $arr = [];
foreach ($data as $v){
if ($v[ 'pid ' ] == $pid){
$arr[ ]=$v;
$this->get_tree_list($data,$v [ 'cid ' ]);
}
}
return $arr
}
https://www.runoob.com/php/php-ref-curl.html
http.wxlogin()
public function getOpenId()
{
//获取传来的code
$code = $this->request->get('code');
//根据code处理获取改用户的openid
$appId = "";
$AppSecret = "";
$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appId}&secret={$AppSecret}&js_code={$code}&grant_type=authorization_code";
$res = curlGet($url);
dd($res);
return ['code'=>1,'msg'=>'请求成功','openid'=>$openId];
}