我有一个带索引功能的欢迎控制器:
public function index()
{
$this->load->view('templates\header');
$this->load->view('welcome_message');
$this->load->view('templates\footer');
}
标题视图代码如下:
<header>
<div class="navbar navbar-default navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="<?php echo base_url() ?>">
Test App
</a>
</div>
</div>
</div>
</header>
到目前为止它完美无缺。 我还想在导航栏中添加以下代码(带有标题标签)作为菜单项,但仅限于用户会话处于活动状态。因此,如果用户登录,则只有他/她应该能够看到菜单项,否则用户应该只看到品牌名称为“Test App”的导航栏。
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="<?php echo base_url('welcome') ?>"><i class="fa fa-tachometer"></i> Dashboard</a>
</li>
<li>
<a href="<?php echo base_url('admin/logout') ?>"><i class="fa fa-sign-out"></i> Logout
</a>
</li>
</ul>
</div>
我还有一个帮助程序,如果用户登录或未登录,我会检查并返回true或false,我在控制器中使用它。我不习惯在视图中使用它,因为我必须回显菜单项并调整大量的双/单引号才能使其工作。有没有一个巧妙的方法来做到这一点?
登录助手代码:
function is_logged_in() {
$CI =& get_instance();
$user = $CI->session->userdata('username');
if ( !isset($user) )
{
return false;
}
else
{
return true;
}
}
答案 0 :(得分:0)
您可以根据控制器的用户会话选择要显示的内容。
例如:
if($this->session->userdata('username')<>NULL){
$data['logged_in'] = 1;
}else{
$data['logged_in'] = 0;
}
$this->load->view('templates\header',$data);
在视图中:
if($logged_in==1){
//header with logged in options
}else{
//header with normal options.
}
答案 1 :(得分:0)
为什么不使用session_status()
?
在其documentation个评论中发布的用户之一,用于检查会话是否已启动:
<?php
/**
* @return bool
*/
function is_session_started()
{
if ( php_sapi_name() !== 'cli' ) {
if ( version_compare(phpversion(), '5.4.0', '>=') ) {
return session_status() === PHP_SESSION_ACTIVE ? TRUE : FALSE;
} else {
return session_id() === '' ? FALSE : TRUE;
}
}
return FALSE;
}
// Example
if ( is_session_started() === FALSE ) session_start();
?>