日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

YII中session和cookie

發布時間:2023/12/31 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 YII中session和cookie 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,在Yii中使用session?
與原生態php5的session使用差別是,php5使用session_start();$_session['key'] = $value;?
在yii中,session已經被封裝。不需要start,但需要new一個session對象。

Java代碼??
  • /*****?方式一、實例添加?*****/??
  • $session=new?CHttpSession;??
  • $session->open();??
  • $value1=$session['name1'];??
  • ??
  • /*****?方式二、直接調用應用添加?*****/??
  • Yii::app()->session->add('name','foobar');??
  • Yii::app()->session->add('name2','foobar');??
  • Yii::app()->session->add('name3','foobar');??
  • //或者??
  • $session?=?Yii::app()->session;??
  • $session['key']?=?'value';??
  • var_dump($session['key']);??
  • ???
  • //遍歷??
  • foreach($session?as?$name=>$value)??
  • 一個實例

    Java代碼??
  • $session?=?new?CHttpSession;??
  • $session->open();??
  • ??????????
  • $user_id?=?$this->user->id;??
  • $sessionKey?=?$user_id.'_is_sending';??
  • ??????????
  • if(isset($session[$sessionKey])){??
  • ????$first_submit_time?=?$session[$sessionKey];??
  • ????$current_time??????=?time();??
  • ????if($current_time?-?$first_submit_time?<?10){??
  • ????????$session[$sessionKey]?=?$current_time;??
  • ????????$this->response(array('status'=>1,?'msg'=>'不能在10秒鐘內連續發送兩次。'));??
  • ????}else{??
  • ????????unset($session[$sessionKey]);//超過限制時間,釋放session";??
  • ????}??
  • }??
  • ??
  • //第一次點擊確認按鈕時執行??
  • if(!isset($session[$sessionKey])){??
  • ????$session[$sessionKey]?=?time();??
  • }??
  • ??????????
  • var_dump($sessionKey);var_dump($session[$sessionKey]);exit();??
  • 二,在Yii中使用cookie?
    Yii實現了一個cookie驗證機制,可以防止cookie被修改?。啟用之后可以對cookie的值進行HMAC檢查。?
    Cookie驗證在默認情況下是禁用的。如果你要啟用它,可以編輯應用配置中的組件中的CHttpRequest部分。?

    一定要使用經過Yii驗證過的cookie數據。使用Yii內置的cookies組件來進行cookie操作,不要使用$_COOKIES。?
    實例:

    Java代碼??
  • //?檢索一個名為$name的cookie值???
  • $cookie=Yii::app()->request->cookies[$name];???
  • $value=$cookie->value;???
  • ......???
  • //?設置一個cookie???
  • $cookie=new?CHttpCookie($name,$value);???
  • Yii::app()->request->cookies[$name]=$cookie;???
  • ?

    Java代碼??
  • 'components'=>array(??
  • ????'user'=>array(??
  • ????????//'class'=>'CWebUser',//你可以自定義你的Cwebuser??
  • ????????'identityCookie'=>array('domain'?=>?'.domain.cc','path'?=>?'/'),//配置用戶cookie作用域??
  • ????????//?enable?cookie-based?authentication??
  • ????????'allowAutoLogin'=>true,//有多個分站時,同步登陸??
  • ????????'stateKeyPrefix'=>'yourprefix',//你的前綴,必須指定為一樣的??
  • ????????'loginUrl'=>array('/user/login'),??
  • ????),??
  • ????'session'?=>?array(??
  • ????????'cookieParams'?=>?array('domain'?=>?'.domain.cc',?'lifetime'?=>?0),//配置會話ID作用域?生命期和超時??
  • ????????'timeout'?=>?3600,??
  • ????????//這里千萬不要指定cookieMode?=>?none,否則無法對應sessionid導致無法登錄,更別說同步了。(有些不負責的博客竟然說同步登錄需要設定這個屬性為none!!!!太坑爹了。。。)??
  • ????),???
  • ????'statePersister'=>array(?//指定cookie加密的狀態文件??
  • ????????'class'=>'CStatePersister',//指定類???????
  • ????????'stateFile'=>'../CommonLib/protected/runtime/state.bin',//配置通用狀態文件路徑,注意,如果你的站點是分布式的,你必須把該文件復制一份到不同服務器上,否則無法跨域。因為里面有個通用密鑰,密鑰不同則無法驗證身份。??
  • ????),??
  • ?將session保持在數據庫的設置:

    Java代碼??
  • 'session'?=>?array?(??
  • ????'class'?=>?'system.web.CDbHttpSession',??
  • ????'connectionID'?=>?'db',??
  • ????//'sessionTableName'?=>?'YiiSession',??
  • ),??
  • ?

    總結

    以上是生活随笔為你收集整理的YII中session和cookie的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。