我在项目中工作,我使用Codeigniter PHP框架编码,我想做的是,我想做一个动态导航菜单,一个普通菜单的客人Home - Register - Login ...
和另一个菜单的注册用户options menu and so on ...
这是我的头模板的代码:
<?php
if($this->session->userdata('logged_in'))
{
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
?>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Hey, <?php echo $data['username']; ?></a>
<ul class="dropdown-menu">
<a href="<?php echo base_url(); ?>/login/logout">Déconnexion</a>
</ul>
</li>
</ul>
<?php }else{ ?>
<ul class="nav navbar-nav navbar-right">
<li><a href="<?php echo base_url(); ?>User">Inscrivez-vous</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Connectez-vous <b class="caret"></b></a>
<ul class="dropdown-menu ins">
<?php echo form_open("verifylogin"); ?>
<input type="text" style="margin: 5px 0;" id="username" name="username" class="form-control" placeholder="Nom d'utilisateur"/>
<input type="password" style="margin: 5px 0;" id="password" name="password" class="form-control" placeholder="Mot de passe"/>
<input type="submit" class="btn btn-primary" value="Connexion" />
<?php echo form_close(); ?>
<p><a href="#">Mot de passe oublier?</a></p>
</ul>
</li>
</ul>
<?php } ?>
它是这样工作的,但另一个问题已经暴露,内容和页脚部分在页面中显示了两次,这里是问题的图片:
https://docs.google.com/file/d/0B2keUK5KhVo8bDk1OU1yQ2xfU0k/edit?usp=drivesdk这是我的home Controller
session_start(); //we need to call PHP's session object to access it through CI
class Pages extends CI_Controller {
public function view($page = 'home')
{
if($this->session->userdata('logged_in'))
{
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
$this->load->view('templates/header');
$this->load->view('pages/home');
$this->load->view('templates/footer');
}/*
else
{
//If no session, redirect to login page
redirect('login', 'refresh');
}*/
$this->load->view('templates/header');
$this->load->view('pages/home');
$this->load->view('templates/footer');
}
function logout()
{
$this->session->unset_userdata('logged_in');
session_destroy();
redirect('/', 'refresh');
}
}
我想你已经错误的逻辑在你的控制器。在用户登录的情况下,视图被加载两次。用这个覆盖你的视图函数:
public function view($page = 'home')
{
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
$this->load->view('templates/header');
$this->load->view('pages/home');
$this->load->view('templates/footer');
}