Php 将令牌方法添加到Yii内部的登录表单
因此,我尝试在登录中添加token方法作为额外的安全特性,我所做的如下 login.phpPhp 将令牌方法添加到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 = $_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'