我正在检查用户是否已登录。如果他们是,我想设置一些可用于该类中所有函数的变量,这是迄今为止的代码。从我的视图中调用$ 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 ?>
答案 0 :(得分:2)
这是因为您在视图中已通过$data
而$data
未包含$user_name
只是在加载视图时,您应该执行以下操作,以便在视图中提供这些变量。
$data['user_name'] = $this->user_name;
$data['logged_in'] = $this->logged_in.
$this->load->view('template', $data);
修改:
将$data
声明为全局变量,即在初始化构造函数之前,如下所示 -
protected $data;
然后将$data
用作$this->data
,如果在一个函数中使用username初始化,那么它也将在所有函数中可用。
答案 1 :(得分:0)
在您的视图中更简单的方法,而不是使用:
echo $ user_name; //导致未定义的变量
使用:
$ this-&gt; session-&gt; userdata('user_name')? $ this-&gt; session-&gt; userdata('user_name'):'';
简单来说,上面的语句检查会话中是否设置了user_name,如果是,则直接从会话中显示user_name,否则显示为空白。有了这个,您需要确保在用户注销后销毁会话var user_name。