1. 程式人生 > >ThinkPHP5.0下,利用Cookie和Session來存儲用戶信息

ThinkPHP5.0下,利用Cookie和Session來存儲用戶信息

gin rect 開啟 cookie con _id session func Nid

利用tp5框架封裝好的Cookie類和Session類。若發現過期時間沒有生效,可以試試清除緩存。

登錄頁面Login.php

<?php
/**
* Created by PhpStorm.
* User: zjl
* Date: 2018/11/1
* Time: 15:21
*/
namespace app\admin\controller;

use think\Controller;
use think\Request;
use think\Session;
use think\Cookie;

class Login extends Controller{
public function index(){
return $this->fetch(‘index‘);
}
public function login()
{
$request = Request::instance();
//判斷post過來的數據是否被提交過來
if($request->isPost()){
$data = $request->param();
//對提交的數據進行判斷
if(empty($data[‘user‘]) || empty($data[‘password‘])){
exit(json_encode(array(‘status‘=>0,‘message‘=>‘用戶名或密碼不能為空‘)));
}
//對數據進行過濾
$username = addslashes(trim(stripslashes($data[‘user‘])));
$password = addslashes(trim(stripslashes($data[‘password‘])));
$config_session = [
‘prefix‘ => ‘admin‘, // session 名稱前綴
‘expire‘ => 7200, // session 過期時間
‘use_trans_sid‘ => 1, //跨頁傳遞
‘use_only_cookies‘ => 0, //是否只開啟基於cookies的session的會話方式
];
$session = new Session();
$session->init($config_session);
$session->prefix();
$session->set(‘user‘,$username,‘admin‘);
$session->set(‘password‘,$password,‘admin‘);
$config_cookie = [
‘prefix‘ => ‘admin‘, // cookie 名稱前綴
‘expire‘ => 1800, // cookie 保存時間
‘path‘ => ‘/‘, // cookie 保存路徑
‘domain‘ => ‘‘, // cookie 有效域名
‘secure‘ => false, // cookie 啟用安全傳輸
‘httponly‘ => false, // httponly 設置
‘setcookie‘ => true, // 是否使用 setcookie
];
$cookie = new Cookie();
$cookie->init($config_cookie);
$cookie->prefix();
$cookie->set("sessionId",session_id());
$this->redirect(‘/index.php/admin/Index/index‘);
}
}
}

主頁面Index.php
<?php
/**
* Created by PhpStorm.
* User: zjl
* Date: 2018/11/1
* Time: 15:21
*/
namespace app\admin\controller;

use think\Controller;
use think\Request;
use think\Session;
use think\Cookie;

class Index extends Controller{
public function index(){
if(Cookie::has("sessionId",‘admin‘)){
if(Session::has(‘user‘,‘admin‘) && Session::has(‘password‘,‘admin‘)){
$user = Session::get(‘user‘,‘admin‘);
$password = Session::get(‘password‘,‘admin‘);
$this->assign(‘user‘,$user);
$this->assign(‘password‘,$password);
return $this->fetch(‘index‘);
}else{
//‘session過期了‘;
$this->redirect(‘/index.php/admin/Login/index‘);

}
}else{
//‘cookie過期了‘;
$this->redirect(‘/index.php/admin/Login/index‘);
}
}
public function logout()
{
Session::flush();
Cookie::clear(‘admin‘);
$this->redirect(‘admin/Login/index‘);

}
}

ThinkPHP5.0下,利用Cookie和Session來存儲用戶信息