Привет, новичок в ci, просто работая над входом и выходом из системы. Когда я пытаюсь выйти из системы, url не найден /loginController/logout В чем проблема? Это из-за сеанса или я чего-то пропустил?
Вот мой контроллер
<?php
class loginController extends CI_Controller{ /**controller*/
public function index(){
$this->login();
}
public function login(){
$this->load->view('login');
}
public function home(){
if ($this->session->userdata('logged')){
$this->load->view('main');
} else {
redirect('loginController/denied');
}
}
public function denied(){
$this->load->view('denied_page');
}
public function login_validation() /**set rules*/
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username',
'Username', 'required|min_length[3]|max_length[12]');
$this->form_validation->set_rules('password',
'Password', 'required|sha1|callback_password_check');
if ($this->form_validation->run()){ /** form valdation*/
$data = array(
'username' => $this->input ->post('username'),
'logged' => 1
);
$this->session->set_userdata($data);
redirect('main');
} else {
$this->load->view('login');
}
}
public function logout(){ //login
$this->session->sess_destroy();
redirect('login');
}
public function password_check(){
$username = $this->input->post('username');
$password = $this->input->post('password');
$this->load->model('users');
if($this->users->log_in($username, $password)){
return True;
}else{
$this->form_validation->set_message('password_check',
'Incorrect username or password.');
return False;
}
}
}
?>
$this->load->helper('url');
на функцию индекса и изменить $this->load->helper(array('form', 'url'));
к $this->load->helper(array('form'));
на вашей функции проверки. при перенаправлении используйте base_url()
при выходе из функции измените redirect('login');
второй строки redirect('login');
redirect(base_url('/'.get_class($this)));
я надеюсь, что это сработает и поможет вам, просто не забудьте прочитать это, и после выхода из системы, страница входа будет доступна через вашу функцию index().
если это не сработает, попробуйте изменить base_url() на site_url(), но вы должны знать, в чем отличия.
изменить код
public function logout(){ //login
$this->session->sess_destroy();
redirect('login');
}
в
public function logout(){
$this->session->sess_destroy();
redirect('loginController/login');
}
redirect('login')
прекрасно и, собственно, как это должно быть сделано (если маршруты позволяют!). Я не понимаю, почему 2) и особенно почему это ужасно 3). без используемых маршрутов невозможно сказать, что не так с кодом