我正在检查用户是否已登录。如果是,我想要设置一些变量,这些变量将可用于该类中的所有函数,这里是到目前为止的代码。从我的视图中调用$logged_in或$user_name会导致未定义的变量吗?请帮助:)
<?php
class Auth extends Controller {
function __construct()
{
parent::Controller();
$this->load->library('form_validation');
$this->load->model('Auth_model');
if ($this->session->userdata('logged_in') == TRUE)
{
$this->user_name = $this->session->userdata('user_name');
$this->logged_in = TRUE;
}
else
{
$this->logged_in = FALSE;
}
}
function forgot()
{
$data['title'] = "Forgot Password";
$data['main_content'] = "auth/forgot";
$this->load->view('template', $data);
}
/* My view file */
<?php echo $user_name; // results in undefined variables ?>发布于 2010-11-03 12:58:57
这是因为您在视图中传递了$data,而$data不包含$user_name
在加载视图之前,您应该像下面这样做,以便这些变量在视图中可用。
$data['user_name'] = $this->user_name;
$data['logged_in'] = $this->logged_in.
$this->load->view('template', $data);编辑:
在初始化构造函数之前声明$data为全局变量,如下所示-
protected $data;
然后在任何地方使用用户名作为$this->data,所以如果它在一个函数中用用户名初始化,那么它也将在所有函数中都可用。
发布于 2010-11-09 06:14:17
在视图中执行此操作的一种更简单的方法,而不是使用:
echo $user_name;//产生未定义的变量
使用:
会话$
->会话->用户数据(‘user_name’)?$此->会话->用户数据(‘user_name’):'';
简单地说,上面的语句检查是否在会话中设置了user_name,如果设置了,它将直接显示会话中的user_name,否则显示为空。这样,您将需要确保在用户注销后销毁会话变量user_name。
https://stackoverflow.com/questions/4084217
复制相似问题