首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codeigniter __construct()帮助

Codeigniter __construct()帮助
EN

Stack Overflow用户
提问于 2010-11-03 12:24:06
回答 2查看 1.8K关注 0票数 2

我正在检查用户是否已登录。如果是,我想要设置一些变量,这些变量将可用于该类中的所有函数,这里是到目前为止的代码。从我的视图中调用$logged_in或$user_name会导致未定义的变量吗?请帮助:)

代码语言:javascript
复制
<?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 ?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-03 12:58:57

这是因为您在视图中传递了$data,而$data不包含$user_name

在加载视图之前,您应该像下面这样做,以便这些变量在视图中可用。

代码语言:javascript
复制
$data['user_name'] = $this->user_name;
$data['logged_in'] = $this->logged_in.
$this->load->view('template', $data);

编辑:

在初始化构造函数之前声明$data为全局变量,如下所示-

protected $data;

然后在任何地方使用用户名作为$this->data,所以如果它在一个函数中用用户名初始化,那么它也将在所有函数中都可用。

票数 2
EN

Stack Overflow用户

发布于 2010-11-09 06:14:17

在视图中执行此操作的一种更简单的方法,而不是使用:

echo $user_name;//产生未定义的变量

使用:

会话$

->会话->用户数据(‘user_name’)?$此->会话->用户数据(‘user_name’):'';

简单地说,上面的语句检查是否在会话中设置了user_name,如果设置了,它将直接显示会话中的user_name,否则显示为空。这样,您将需要确保在用户注销后销毁会话变量user_name。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4084217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档