您的位置:永利集团登录网址 > 计算机教学 > YII学习笔记-登录后的session的总结

YII学习笔记-登录后的session的总结

2019-10-02 17:53

设置session过期时间

在 Yii框架中使用session 的笔记:

  在YII框架的默认的登录后的session数据是id,name,__states这三个数据。

如何在YII里设置SESSION过期时间,而不需要在php.ini里面设置。

首先,在Yii框架中,你不需要像标准PHP代码那样使用session_start(),
在Yii框架中,autoStart 属性缺省被设置为true,所以,
虽然没有使用session_start(),你仍然可以使用$_SESSION全局变量,但最好使用
Yii框架封装的Yii::app->session:

  在搭配好YII框架环境后,可以使用admin/admin,来登录系统。如果在protected/views/layouts/main.php代码中嵌套一个这样的语句

在protected/config/main.php里,设置:

设置session变量:
Yii::app()->session['var']='value';
使用: echo Yii::app()->session['var'];
移除: unset(Yii::app()->session['var']);

<?php
    session_start();
    print_r($_SESSION);
?>

 代码如下

更为复杂一点的使用时如何配置你的session
配置项可设在 protected/config/main.php的components中:

就会显示

'components'=>array(
    'session'=>array(
        'timeout'=>3600,
    ),
)

'session'=>array(
   'autoStart'=>false(/true),
   'sessionName'=>'Site Access',
   'cookieMode'=>'only',
   'savePath'='/path/to/new/directory',
),

Array ( [85cd7ad9d44e5587f655722c60fd3dd9__id] => admin [85cd7ad9d44e5587f655722c60fd3dd9__name] => admin [85cd7ad9d44e5587f655722c60fd3dd9__states] => Array ( ) )

设置session变量:

将session保持在数据库的设置:
'session' => array (
    'class' => 'system.web.CDbHttpSession',
    'connectionID' => 'db',
    'sessionTableName' => 'actual_table_name',
),

这样的数据

Yii::app()->session['var']=’value’;
使用: echo Yii::app()->session['var'];
移除: unset(Yii::app()->session['var']);
更为复杂一点的使用时如何配置你的session
配置项可设在 protected/config/main.php的components中:

好,还有什么呢?对了,为了调试,有时需要知道当前用户的session ID,
该值就在 Yii::app()->session->sessionID 中。

你会发现id和那么的数据都是admin,也就是说,其实yii就只为我们提供了一个用户名就作为用户凭证。我们更多的时候需要用session来记录更多的用户凭证,比如都用户的权限等。

 代码如下

最后,当用户退出登录(logout),你需要消除痕迹,可使用:
Yii::app()->session->clear() 移去所有session变量,然后,调用

首先我们来试着修改id这样数据。

‘session’=>array(
‘autoStart’=>false(/true),
‘sessionName’=>’Site Access’,
‘cookieMode’=>’only’,
‘savePath’='/path/to/new/directory’,
),

Yii::app()->session->destroy() 移去存储在服务器端的数据。

  首先你可以提供我们登录的的login在模型LoginForm.php中。

原文地址: 

 

 

public function login()
    {
        if($this->_identity===null)
        {
            $this->_identity=new UserIdentity($this->username,$this->password);
            $this->_identity->authenticate();
        }
        if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
        {
            $duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
            Yii::app()->user->login($this->_identity,$duration);
            return true;
        }
        else
            return false;
    }

我们最好不要改动framework文件的内容。所以我们改动传进去的数据,也就是UserIdentity这个类。

为什么id和name都是admin,因为在类UserIdentity中提供了一个这样的方法

public function getId()
    {
        return $this->username;
    }

我们需要重写这个方法。

然后添加更过的数据,在上面有一个__states这项数据,我们可以在UserIdentity中重写getPersistentStates方法

内容我先随意添加

       public function getPersistentStates()
    {
        return array("a"=>"b");
    }
    public function getId() {
            return 10;
        }

新的session将会变为

Array ( [85cd7ad9d44e5587f655722c60fd3dd9__id] => 10 [85cd7ad9d44e5587f655722c60fd3dd9__name] => admin [85cd7ad9d44e5587f655722c60fd3dd9a] => b [85cd7ad9d44e5587f655722c60fd3dd9__states] => Array ( [a] => 1 ) )

然后我们就可以通过Yii::app->user->a来访问我们添加的新数据了。

 

操作session

在YII中不用自己使用session_start()来开启session,yii本身已经开启。

当然你也可以在使用$_SESSION来控制session,但是不推荐。

用YII内置的函数控制

首先配置main.php文件

'session'=>array(

   'autoStart'=>false(/true),

   'sessionName'=>'Site Access',

   'cookieMode'=>'only',

   'savePath'='/path/to/new/directory',

),

将session保持在数据库的设置:

'session' => array (

    'class' => 'system.web.CDbHttpSession',

    'connectionID' => 'db',

    'sessionTableName' => 'actual_table_name',

),

设置session变量:
Yii::app()->session['var']='value';

使用: echo Yii::app()->session['var'];

移除: unset(Yii::app()->session['var']);

获取用户的session ID

Yii::app()->session->sessionID

最后,当用户退出登录(logout),你需要消除痕迹,可使用: Yii::app()->session->clear() 移去所有session变量,然后,调用 Yii::app()->session->destroy() 移去存储在服务器端的数据。

 

 

本文由永利集团登录网址发布于计算机教学,转载请注明出处:YII学习笔记-登录后的session的总结

关键词:

  • 上一篇:没有了
  • 下一篇:没有了