我试图使登录按钮在引导导航栏,但我发现很难当我尝试登录后,然后进入登录按钮变成注销?有谁能帮我吗?
<li class="nav navbar-nav navbar-right">
<a href="<?php echo base_url(); ?>login/login" class="btn btn-default btn-outline btn-circle collapsed">Login</a>
</li>
Codeigniter 3
当你在登录功能的成功部分登录时,你应该创建一些会话userdata,在那里你可以存储一些用户名或任何你需要的数据。然后在视图中,你应该能够像下面这样使用会话
<?php if ($this->session->userdata('username') == TRUE) {?>
<li class="nav navbar-nav navbar-right">
<a href="<?php echo base_url('login/logout'); ?>" class="btn btn-default btn-outline btn-circle collapsed">logout</a>
</li>
<?php } else { ?>
<li class="nav navbar-nav navbar-right">
<a href="<?php echo base_url('login/login'); ?>" class="btn btn-default btn-outline btn-circle collapsed">Login</a>
</li>
<?php } ?>
注销或销毁会话
同样在你的base_url()你可能需要包括index.php
<?php echo base_url('index.php/login/login'); ?>
<?php echo base_url('index.php/login/logout'); ?>
当你创建会话时,你需要加密密钥http://randomkeygen.com/在application/config/config.php上的编码器在第313行并且一旦你有了加密密钥自动加载会话。
设置会话数据http://www.codeigniter.com/user_guide/libraries/sessions.html
$newdata = array(
'username' => 'johndoe',
'email' => 'johndoe@some-site.com',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
样品控制器
<?php
class Login extends CI_Controller {
public function index() {
$this->login();
}
public function login() {
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == FALSE) {
$this->load->view('login_view');
} else {
$newdata = array(
'username' => $this->input->post('username'),
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
redirect('success-controller');
}
}
public function logout() {
// Also unset your user data here
redirect('login');
}
}
表单验证用户指南
http://www.codeigniter.com/user_guide/libraries/form_validation.html自动装载
$autoload['helper'] = array('array', 'date', 'file', 'form', 'html', 'url');