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