一.Session
系統提供了 Session 管理和操作的完善支持,只需要通過 session()函數完成,該函
數可以完成 Session 的設置、獲取、刪除和管理操作。(session是保存在服務器端)
一般來說,在 ThinkPHP 中不需要手動初始化 session,系統會自動初始化。
參數名 | 說明 |
id | session_id 值 |
name | session_name 值 |
path | session_save_path 值 |
prefix | session 本地化空間前綴 |
expire | session.gc_maxlifetime 設置值 |
domain | session.cookie_domain 設置值 |
use_cookies | session.use_cookies 設置值 |
use_trans_sid | session.use_trans_sid 設置值 |
type | session 處理類型,支持驅動擴展 |
1 //手工初始化 2 session( array('name'=>'session_id', 'expire'=>3600));
1 //配置SESSION初始化 2 SESSION_OPTIONS=> array( 3 'name'=>'session_id', 4 'expire'=>3600, 5 ),
默認情況下,初始化之后系統會自動啟動 session,所以上面初始化的代碼了解即可,如果不希望系統自動啟動 session
的話,可以如下設置:
在 config.php 進行配置:
1 //設置系統不啟用session 2 'SESSION_AUTO_START' => false,
在 WeiBo/Home/Controller/UserController.class.php 中對 session 進行使用:
//注釋的是不用時ThinkPHP框架時使用session的格式
1 //session賦值 2 session('user', 'Mr.Lee'); //$_SESSION['user'] = 'Mr.Lee';
1 //獲取session值 2 echo session('user'); //echo $_SESSION['user'];
1 //session刪除 2 session('user', null); //unset($_SESSION['user']);
1 //刪除所有session 2 session(null); //$_SESSION=array();
1 //判斷session是否存在,存在則為1,不存在則為空,而不是0 2 echo session('?user'); //isset($_SESSION['user']);
1 //暫停session,寫入關閉 2 session('[pause]'); //session_write_close();
1 //啟動session,可開啟寫入 2 session('[start]'); //session_start()
1 //銷毀session 2 session('[destroy]'); //session_destroy();
1 //重新生成session id,這時服務器端不會覆蓋掉原來的session id 而是重新生成一個,這時再啟用null和destroy都只是刪除現在最新的session id,而不是之前的 2 session('[regenerate]'); //session_regenerate_id();
PS:如果在初始化 session 設置的時候傳入 prefix 參數或者單獨設置了
SESSION_PREFIX 參數的話,就可以啟用本地化 session 管理支持。
1 //SESSION前綴 2 'SESSION_PREFIX'=>'think_',
這時處理的$_SESSION['user']將變成$_SESSION['think_']['user'],而我們在
處理上沒有任何區別。
二.Cookie
ThinkPHP 內置了一個 cookie 函數用于支持和簡化 Cookie 的相關操作,該函數可以完成
Cookie 的設置、獲取、刪除操作。(cookie是保存在客戶端)
注釋后面是不用ThinkPHP時的cookie的格式
1 //cookie賦值 2 cookie('user', 'Mr.Lee'); //setcookie('user', 'Mr.Lee');
1 //cookie取值 2 echo cookie('user'); //echo $_COOKIE['user'];
1 //cookie賦值,設置過期時間,以秒計時 2 cookie('user', 'Mr.Lee', 3600);
1 //cookie賦值,第三參數數組設置過期時間和前綴 2 cookie('user', 'Lee', array('expire'=>3600,'prefix'=>'think_')); 3 cookie('user', 'Mr.Lee', 'expire=3600&prefix=think_');
1 //cookie取值,帶前綴 2 echo cookie('think_user');
PS:除了過期和前綴,還有 path(保存路徑)和 domain(域)。當然也支持配置文件的
寫法:COOKIE_PREFIX、COOKIE_EXPIRE、COOKIE_PATH、COOKIE_DOMAIN。
1 //cookie賦值,數組 2 cookie('user',array('Mr.', 'Lee'));
1 //cookie刪除user 2 cookie('user',null);
1 //cookie刪除在配置文件里指定前綴的所有 2 cookie(null);
1 //cookie刪除指定前綴的 2 cookie(null, 'think_');
文章列表