Ошибка выхода из PHP Codeigniter при щелчке URL выхода не найден

0

Привет, новичок в 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;
    }




  }
  }
  ?>
Теги:
codeigniter

2 ответа

0
  1. load $this->load->helper('url'); на функцию индекса и изменить $this->load->helper(array('form', 'url')); к $this->load->helper(array('form')); на вашей функции проверки.
  2. при перенаправлении используйте base_url()

  3. при выходе из функции измените redirect('login'); второй строки redirect('login'); redirect(base_url('/'.get_class($this)));

я надеюсь, что это сработает и поможет вам, просто не забудьте прочитать это, и после выхода из системы, страница входа будет доступна через вашу функцию index().

если это не сработает, попробуйте изменить base_url() на site_url(), но вы должны знать, в чем отличия.

  • 0
    redirect('login') прекрасно и, собственно, как это должно быть сделано (если маршруты позволяют!). Я не понимаю, почему 2) и особенно почему это ужасно 3). без используемых маршрутов невозможно сказать, что не так с кодом
  • 0
    может быть, вы правы, но я не знаю, как перенаправить за сцену и как это обрабатывать параметр
Показать ещё 4 комментария
0

изменить код

public function logout(){                //login

    $this->session->sess_destroy();
    redirect('login');
}

в

public function logout(){   

    $this->session->sess_destroy(); 
    redirect('loginController/login');
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню