我正在使用HTML表格指南中的CodeIgniter +注册/登录脚本。我想在导航栏中显示用户名(登录名为:[username])。所以在控制器中我添加了一个变量:
$data['login'] = '';
$this->load->view('templates/header', $data);
$this->load->view('templates/nav', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
并在nav.php中:
<?php
if ($login!='')
echo "Logged in as: ".$login;
?>
在登录后加载的访问受控页面中:
$login = $fgmembersite->UserFullName();
是:
function UserFullName()
{
return isset($_SESSION['name_of_user'])?$_SESSION['name_of_user']:'';
}
用户名在Access Controlled Page中正确返回,但不在导航栏中返回。我相信这是因为加载了视图的顺序。在加载templates/nav
之前,可能根据我在控制器中声明的内容清除变量$data['login']
。有解决方法吗?
答案 0 :(得分:1)
为什么还需要在控制器中添加$data['login']
?如果您的用户已登录,则必须将该信息放入会话中吗?如果不只是首先在会话中保存登录用户的名称.Eg。
$this->session->set_userdata('logged_user_name', $username);
现在,在要显示名称的页面中,只需执行以下操作:
if( $this->session->userdata('logged_user_name') ){
echo $this->session->userdata('logged_user_name');
}
答案 1 :(得分:0)
使用以下顺序代码段 -
$data['login'] = '';
$this->load->view('templates/header', $data);
$this->load->view('templates/nav', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
function UserFullName()
{
return isset($_SESSION['name_of_user'])?$_SESSION['name_of_user']:'';
}
$login = $fgmembersite->UserFullName();
<?php
if ($login!='')
echo "Logged in as: ".$login;
?>