2014年1月23日 星期四

yii framework - Cookie的操作方式

本來只想說打在 yii的實用小技巧 就好了
但是越使用越覺得Cookie這東西在開發上實在太常見, 不為此打篇說明好像不太夠
前言說夠了, 我們開始吧!

其實 官網 說很清楚了, 不過我還是把常用的列出來好了, 畢竟很多我們用不到.

寫入
$cookie=new CHttpCookie('變數名稱',變數數值);
Yii::app()->request->cookies['變數名稱']=$cookie;


讀取
$test=Yii::app()->request->getCookies(); //抓全部Cookie
echo $test['變數名稱'];

$cookieData=Yii::app()->request->cookies['變數名稱']->value; //抓指定的Cookie
echo $cookieData;


檢查某Cookie是否有值
isset(Yii::app()->request->cookies['變數名稱']);


將Cookie值清空
Yii::app()->request->cookies->clear(); //刪除全部Cookie

unset(Yii::app()->request->cookies['變數名稱']); //刪除指定的Cookie


設定過期的時間

$cookie=new CHttpCookie('變數名稱',變數數值);
$cookie->expire time()+60*60*24*30; //30天後過期


設定透過HTTPS傳輸Cookie (可在framework\web\js\source\jquery.cookie.js看到說明, 參考這篇)
'session' => array(
'cookieParams' => array(
'secure' => true,
),
),

ps: 設定的位置在/protected/config/main.php


設定httpOnly 防止 XSS攻擊 (參考這篇這篇2)
'session' => array(
'cookieParams' => array(
'httpOnly' => true,
),
),

ps: 設定的位置同上

官方說明如下:
cookie是否只允許通過HTTP協議訪問。通過設置這個屬性為true,cookie將無法訪問腳本語言, 例如JavaScript,它可以有效減少由於通過身份被盜竊而導致的XSS攻擊。注意:此屬性僅適合PHP 5.2.0以及以上版本。

ps: 沒想到從IE6 SP1就有支援了...不過有多少人真的有注意到資安問題並開啟呢?

沒有留言:

張貼留言