Rumah  >  Soal Jawab  >  teks badan

php - yii登录如何记住用户名?

在使用yii登录的时候,我将第二个参数$duration设置成86400,既将用户的登录信息保存到cookie里面24小时。

Yii::app()->user->login($identity,86400);

当我想要解析这个cookie的时候,发现cookie是这样的。

array(4) {
  ["CNZZDATA2724999"]=>
  string(48) "cnzz_eid=1338694115-1438177009-&ntime=1438182411"
  ["Hm_lvt_598eaf80391e655d10ebe38419b36fb2"]=>
  string(32) "1438310921,1438410705,1438589813"
  ["PHPSESSID"]=>
  string(26) "8ak62atemv5t4vc67hjrj1l705"
  ["abed3dd2114943c0bf392b4ae87e177b"]=>
  string(139) "d6991a57d52238c7b0b10d36c07f1fd9b715532ea:4:{i:0;s:2:"27";i:1;s:5:"endui";i:2;i:86400;i:3;a:2:{s:4:"role";s:1:"1";s:4:"name";s:5:"endui";}}"
}

但是我该怎么才可以解析这个cookie呢?是用什么方法?

PHP中文网PHP中文网2749 hari yang lalu427

membalas semua(1)saya akan balas

  • 高洛峰

    高洛峰2017-04-10 15:55:14

    // cookies
    $cookie = array(
        'CNZZDATA2724999' => 'cnzz_eid=1338694115-1438177009-&ntime=1438182411',
        'Hm_lvt_598eaf80391e655d10ebe38419b36fb2' => '1438310921,1438410705,1438589813',
        'PHPSESSID' => '8ak62atemv5t4vc67hjrj1l705',
        'abed3dd2114943c0bf392b4ae87e177b' => 'd6991a57d52238c7b0b10d36c07f1fd9b715532ea:4:{i:0;s:2:"27";i:1;s:5:"endui";i:2;i:86400;i:3;a:2:{s:4:"role";s:1:"1";s:4:"name";s:5:"endui";}}' 
    );
    //正则
    $regExp = '/(a:\d+:{.+)$/';
    
    /*假设明确知道是哪个键存储的cookie值*/
    $cookieUserInfo = end($cookie);
    $getUserInfoStr = preg_match($regExp,$cookieUserInfo,$matchedStr);
    $getUserInfo = $matchedStr[1] ? unserialize($matchedStr[1]) : array();
    print_r($getUserInfo);
    
    /*如果是随机某键某位置存储*/
    $getUserInfo = array();
    foreach($cookie as $cookieUserInfo){
        if(preg_match($regExp,$cookieUserInfo,$matchedStr)){
            $getUserInfo = unserialize($matchedStr[1]);
            break;
        }
    }
    print_r($getUserInfo);
    

    balas
    0
  • Batalbalas