Php 将令牌方法添加到Yii内部的登录表单

Php 将令牌方法添加到Yii内部的登录表单,php,session,yii,Php,Session,Yii,因此,我尝试在登录中添加token方法作为额外的安全特性,我所做的如下 login.php $token = $_SESSION['token'] = md5(uniqid(mt_rand(),true)); if(Yii::app()->user->hasFlash('error')){ ?> <div class="flashMessage"> <?php echo Yii::app()->user->getFl

因此,我尝试在登录中添加token方法作为额外的安全特性,我所做的如下

login.php

$token = $_SESSION['token'] = md5(uniqid(mt_rand(),true));
if(Yii::app()->user->hasFlash('error')){
    ?>
    <div class="flashMessage">
        <?php echo Yii::app()->user->getFlash('error') ?>
    </div>
<?php
}
?>

    <input type="hidden" name="token" value="<?php echo $token ?>"/>
//Rest of the form
现在,当我尝试登录时,我得到以下错误

未定义变量:\u会话

我不明白为什么它告诉我们会话不存在,因为它有相同的名称


我提供的任何帮助

使用
Yii
中的
SESSION
,如以下方法之一:

1.使用Yii::app()->会话

Yii::app()->session['KEY']='VALUE'; //setting session 
$key=Yii::app()->session['KEY']; //getting session
2.使用Yii的状态

Yii::app()->user->setState('KEY','VALUE'); //setting session
$key=Yii::app()->user->getState('KEY'); //getting session 
但是状态和会话之间有什么区别呢

如果使用
setState()
|
状态
,则通过添加散列,应用程序之间发生冲突的概率将降低,因为它会在会话密钥中添加散列,例如,如果从
$\u session
获得转储,您将看到:

'0f42ca4d61b26371fee67cc51d7b48d3KEY' => 'VALUE' 
但是如果使用
Yii::app()->session
它将存储普通键,如下所示:

'KEY' => 'VALUE'


您可以检查,它们之间有什么区别?
'KEY' => 'VALUE'