首頁 > php教程 > PHP开发 > 主體

ThinkPHP關於session的操作方法總結

高洛峰
發布: 2016-12-22 10:38:38
原創
1194 人瀏覽過

本文詳細講述了ThinkPHP關於session的各種操作方法,詳情如下:

ThinkPHP操作session官方的說明文件如下:

start 啟動session
pause 暫停session
clear 清除session
destrosion 取值!
getLocal 取得私有session值
set 設定session值
setLocal 設定私有session值
name 取得或設定session_name
is_set 是否設定session值
is_setLocal 是否設定為預設值尺寸設定session過期時間
setCookieDomain 設定有效網域
setCallback 設定Session 物件反序列化時候的回呼函數

最常用的操作方法範例程式碼如下:

// 检测Session变量是否存在
Session::is_set('name');
// 给Session变 量赋值
Session::set('name','value');
// 获取Session变量
Session::get('name');
登入後複製

 

   

其中SESSION_NAME 參數需要注意,如果需要在不同的項目之間不共享傳遞Session的值,請設定不同的值,否則請保留相同的預設值。

如果設定了相同的SESSION_NAME的值,但是又希望建立基於專案的私有Session空間,該怎麼處理呢? ThinkPHP也支援以專案為Session空間的私有Session操作,以先前常用的操作為例,我們變更如下:

'SESSION_NAME'=>'ThinkID',        // 默认Session_name
'SESSION_PATH'=>'',            // 采用默认的Session save path
'SESSION_TYPE'=>'File',            // 默认Session类型 支持 DB 和 File
'SESSION_EXPIRE'=>'300000',        // 默认Session有效期
'SESSION_TABLE'=>'think_session',    // 数据库Session方式表名
'SESSION_CALLBACK'=>'',            // 反序列化对象的回调方法
登入後複製

   

這樣,和全域的Session操作就不會衝突,可以用於某些特殊情況的需要。

ThinkPHP支援資料庫方式的Session操作,設定SESSION_TYPE的值為DB就可以了,如果使用資料庫方式,也要確保設定好SESSION_TABLE的值,並且匯入下面的DDL到你的資料庫(以MySQL為範例):

// 检测Session变量是否存在(当前项目有效)
Session::is_setLocal('name');
// 给Session变 量赋值(当前项目有效)
Session::setLocal('name','value');
// 获取Session变量(当前 项目有效)
Session::getLocal('name');
登入後複製

   

注意,Db Session方式的資料庫連線會採用專案的資料庫設定資訊進行連結。除了資料庫方式外,還可以增加其它方式的Session保存機制,例如記憶體方式、 Memcache方式等,我們只要增加對應的過濾器就行了,使用session_set_save_handler 方法,具體的方法定義參考Think.Util.Filter下面的FilterSessionDb .class.php 檔案的實作。

 

製作了一個簡單的登陸判斷
登陸偵測之後賦予Session值,讓Session的值為非空即為假的false

CREATE TABLE `think_session` (
`id` int(11) unsigned NOT NULL auto_increment,
`session_id` varchar(255) NOT NULL,
`session_expires` int(11) NOT NULL,
`session_data` blob,
PRIMARY KEY(`id`)
)
登入後複製

   

其中[C('ThER_AUTH_


其中[C('ThER_AUTH_KEYP.和函數類別。在未配置config.php檔案時預設為空

把$logInFind['id'] 取出的帳號值賦予它,預設為關閉頁面Session就自動刪除消失!

其它頁面使用下面格式判斷

$_SESSION[C('USER_AUTH_KEY')] = $logInFind['id'] ;
登入後複製

更多ThinkPHP關於session的操作方法匯總相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板