登录后,用户名不会在标头中更新

时间:2013-10-03 16:40:21

标签: php codeigniter authentication

我正在使用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']。有解决方法吗?

2 个答案:

答案 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)

使用以下顺序代码段 -

代码段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();

code segment4:

<?php
    if ($login!='')
        echo "Logged in as: ".$login;
?>