本文詳細講述了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空間,該怎麼處理呢? 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檔案時預設為空
其它頁面使用下面格式判斷
$_SESSION[C('USER_AUTH_KEY')] = $logInFind['id'] ;
更多ThinkPHP關於session的操作方法匯總相關文章請關注PHP中文網!