1. 程式人生 > >ThinkPHP5.0下,利用Cookie和Session來儲存使用者資訊

ThinkPHP5.0下,利用Cookie和Session來儲存使用者資訊

利用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');

}
}