老师,我想通过一个变量保存登录用户的方法,但是一直实现不了,求解

来源:6-2 借用Cookie实现管理员登录退出功能和优化

E网飙风

2019-08-04

我是想通过全局变量的方法获取登录用户的信息,但是没成功,以下是方法,求指点,谢谢:

*params.php*

return [
	'title' => '微信图书商城',
	'user_info' => '',
	'domain' => [
		'www' => '',
		'm' => '/m',
		'web' => '/web'
	],
	'upload' => [
		'avatar' => '/uploads/avatar',
		'brand' => '/uploads/brand',
		'book' => '/uploads/book',
	]
]

在User的方法中,登录时将当前用户的登录信息赋值给 params[“user_info”],然后在编辑用户基本信息时,再从 params[“user_info”] 中取出当前登录用户的信息,但是取不出来了,一直报:string '' (length=0)

*UserController.php*

<?php
namespace app\modules\web\controllers;

use app\models\User;
use yii\base\Controller;

class UserController extends Controller{
    //login
    public function actionLogin(){
        if( \Yii::$app->request->isGet ){
			$this->layout = "login_index";
			return $this->render("login");
		}

        $login_name = trim( $this->post("login_name","" ));
		$login_pwd = trim( $this->post("login_pwd",""));

		$user_info = User::find()->where([ 'login_name' => $login_name ])->one();
		\Yii::$app->params['user_info'] = $user_info;//这里是正常的可以打印出当前登录用户的信息
    }
    
    //edit
    public function actionEdit(){
        //获取登录用户信息
		$user = \Yii::$app->params['user_info']; //这里就取不出来了,冒似显示的是params['user_info'] 中定义的空的字符串
		var_dump($user);
		if( \Yii::$app->request->isGet){
			//将当前用户信息传递到当前页面
			return $this->render("edit",[
				'info' => $user
			]);
		}
    }
}

老师,这是怎么回事呢?为什么保存进params[‘user_info’]的值却是取不出来?

写回答

2回答

编程浪子

2019-08-04

你好

我给你举个例子

页面A 打开,里面自己设置了一个变量。当页面执行完毕,内部所有变量都会被系统回收


页面B打开,此时又是一个全新的过程。



0
5
E网飙风
非常感谢!虽然没有直接解决当时的问题,但是老师还是很有耐心的
2019-08-05
共5条回复

编程浪子

2019-08-05

你好

我们课程的源码是这么写的,每次访问页面都会执行登陆验证的方法 所以在某个页面整个过程中 这个变量是存在的

//img1.sycdn.imooc.com/szimg/5d484f8009ad66a016161282.jpg

0
2
E网飙风
谢谢老师,辛苦了这么晚还在指导。
2019-08-06
共2条回复

微信服务号+Yii2.0构建商城系统全栈应用

传统PC后端与火热微信结合,打造一个摩登的商业电商系统

757 学习 · 744 问题

查看课程