Session元件(Session Component)
第一節
Cake內Session的儲存參數
Cake內建三種方式存放session資料:放在暫存檔,使用PHP預設機制,或存放在資料庫,預設使用PHP預設機制。
如果想改成使用暫存檔或資料庫,請編輯核心設定檔:/app/config/core.php。
依需要可以把CAKE_SESSION_SAVE變數改成'cake','php'或'database'三者之一。
core.php Session 設定
/**
* CakePHP includes 3 types of session saves
* database or file. Set this to your preferred method.
* If you want to use your own save handler place it in
* app/config/name.php DO NOT USE file or database as the name.
* and use just the name portion below.
*
* Setting this to 'cake' will save files to /cakedistro/tmp directory
* Setting it to 'php' will use the php default save path
* Setting it to 'database' will use the database
*
*
*/
define('CAKE_SESSION_SAVE', 'php');為了要將session資料存在資料庫,必須在資料庫內建立資料表。
資料表的schema放在/app/config/sql/sessions.sql內。
第二節
使用Cake的Session Component
Cake的session component用來與session資料互動。
它包含了對session資料最基本的讀寫動作,還包含錯誤訊息和接受訊息(如"Your data has been saved")等。
在所有的controller裡預設是可以使用Session component的。
check
- string $name
檢查$name是否已經存於session裡。
del
- string $name
delete
- string $name
刪除$name這個session變數。
error
傳回Session component內所發生最後一個錯,常用於除錯。
flash
- string $key = 'flash'
傳回session內用setFlash()所設定的最後一個訊息。
如果有指定$key,則會選用以該鍵存放的訊息中最近的一條。
read
- string $name
傳回名為$name的session變數。
renew
建立新的session ID,重新目前使用中的session,刪除舊的,並將刪session的資料傳給新的。
setFlash
- string $flashMessage
- string $layout =
'default'
- array $params
- string $key = 'flash'
將$flashMessage寫到session內(稍後可由flash()取得)。
如果$layout設成'default',訊息會以'<div class="message">'.$flashMessage.'</div>'型式儲存。
如果$layout設成'',訊息會原封不動的被存放。
如果設成其他值,則使用$layout指定的方式存放。
$params是留著未來使用的,目前沒有作用。
$key則可以讓這個訊息以$key鍵存放,呼叫flash()時可依不同鍵取回訊息。
valid
如果session有效則傳回true。
最好在read()前使用,以確認讀得到資料。
write
- string $name
- mixed $value
將名稱為$name,值為$value的session變數存放於目前的session中。
沒有留言:
張貼留言