2012-02-07 60 views
0

在我的应用程序中,我希望当用户登录时,他/她可以看到他/她的最后一次登录时间,就像我们在用户模块中登录一样。所以为了这样做,我只是遵循这个link 。所以我做了我的UserIdentity这样的代码获取上次登录时间

<?php 

/** 
* UserIdentity represents the data needed to identity a user. 
* It contains the authentication method that checks if the provided 
* data can identity the user. 
*/ 
class UserIdentity extends CUserIdentity 
{ 
    private $_id; 

    public function authenticate() 
    { 
     $user = User::model()->findByAttributes(array('username'=>$this->username)); 
     if($user===null) 
      $this->errorCode=self::ERROR_USERNAME_INVALID; 
     else if($user->password!==md5($this->password)) 
      $this->errorCode=self::ERROR_PASSWORD_INVALID; 
     else 
     { 
      $this->_id=$user->id; 
      $this->setState('lastLoginTime', $user->lastLoginTime); 
      $this->errorCode=self::ERROR_NONE; 
     } 
     return !$this->errorCode; 
    } 

    public function getId() 
    { 
    return $this->_id; 
    $id=Yii::app()->user->id; 
    $lastLoginTime=Yii::app()->user->lastLoginTime; 
    } 
} 

And to show the last login time and user name I changed my view >> column2.php file like this 

<?php $this->beginContent('//layouts/main'); ?> 
<div class="container"> 
    <div class="span-19"> 
    <div id="content"> 
     <?php echo $content; ?> 
    </div><!-- content --> 
    </div> 
    <div class="span-5 last"> 
    <div id="sidebar"> 
     <?php if(Yii::app()->user->id):?> 
     <span class="admin-message">Hello,&nbsp; <span><?php echo yii::app()->user->name;?>&nbsp;</span></span> 
     <?php echo Yii::app()->user->lastLoginTime;?> 
    <?php endif;?> 
    <?php 
     $this->beginWidget('zii.widgets.CPortlet', array(
     'title'=>'Operations', 
    )); 
     $this->widget('zii.widgets.CMenu', array(
     'items'=>$this->menu, 
     'htmlOptions'=>array('class'=>'operations'), 
    )); 
     $this->endWidget(); 
    ?> 

    <?php 
     if(Yii::app()->getModule('user')->isAdmin()): 
     $this->beginWidget('zii.widgets.CPortlet',array(
     'title' => 'Admin Operations', 
     )); 
     $this->widget('zii.widgets.CMenu', array(
     'items'=>array(
      array("label"=> "Create User", "url"=>array('/user/admin/create')), 
      array("label"=> "List User", "url"=> array('/user')), 
      array("label"=>"Manage Profile","url"=>array('/user/profile')), 
      array("label"=>"Manage Profile Fields","url"=>array('/user/profileField/admin')), 
     ), 
     'htmlOptions'=>array('class'=>'operations'), 
    )); 
     $this->endWidget(); ?> 
    <? endif; 
    ?> 
    </div><!-- sidebar --> 
    </div> 
</div> 
<?php $this->endContent(); ?> 

它显示登录后的用户名,但是当我要检查上次登录时间它显示像错误: 属性“CWebUser.lastLoginTime”没有定义。有人能指导我如何做到这一点?

回答

1

使用

<?php echo Yii::app()->user->getState('lastLoginTime');?> 
+0

雅我已经用它..它根本不工作。 – Jagdish 2012-02-08 19:10:12

0

不知道为什么不工作。 我认为它应该工作,如果它不能使用会话。

Yii::app()->session['lastLoginTime'] = $user->lastLoginTime; 
echo Yii::app()->session['lastLoginTime']; 
相关问题