0

我正在使用 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);

在 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']:'';
    }

用户名在访问控制页面中正确返回,但不在导航栏中。我相信这是因为加载视图的顺序。在templates/nav加载之前,变量$data['login']可能正在根据我在控制器中声明的内容被清除。有解决方法吗?

4

2 回答 2

1

为什么你仍然需要添加$data['login']你的控制器?如果您让您的用户登录,您必须将该信息放入您的会话中,对吗?如果不只是在会话中首先保存登录用户的名称。例如。

$this->session->set_userdata('logged_user_name', $username);

现在,在要显示名称的页面中执行以下操作:

if( $this->session->userdata('logged_user_name') ){
    echo $this->session->userdata('logged_user_name');
}
于 2013-10-04T07:58:06.917 回答
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();

代码段4:

<?php
    if ($login!='')
        echo "Logged in as: ".$login;
?>
于 2013-10-03T17:10:09.137 回答