【问题标题】:Codeigniter php logout issue when clicked logout URL not found单击未找到注销 URL 时出现 Codeigniter php 注销问题
【发布时间】:2015-01-04 23:14:23
【问题描述】:

嗨,我是 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;
    }




  }
  }
  ?>

【问题讨论】:

  • 您确定某处没有冲突的路线吗?你能发布路线吗?
  • 这是我的路线 $route['default_controller'] = "main"; $route['404_override'] = '';

标签: php codeigniter


【解决方案1】:
  1. 在索引函数上加载$this-&gt;load-&gt;helper('url');,在验证函数上将$this-&gt;load-&gt;helper(array('form', 'url'));更改为$this-&gt;load-&gt;helper(array('form'));。
  2. 重定向时使用base_url()

  3. 在函数注销时将第二行redirect('login');改为redirect(base_url('/'.get_class($this)));

我希望它能对您有所帮助,请记住阅读this,注销后将通过您的 index() 函数访问登录页面。

如果这不起作用,请尝试将 base_url() 更改为 site_url() 但您应该知道有什么区别。

【讨论】:

  • redirect('login') 非常好,实际上,应该怎么做(如果路线允许的话!)。我不明白为什么 2),尤其是为什么可怕的 3)。如果没有使用的路线,就无法判断代码有什么问题
  • 也许你是对的,但我不知道如何在幕后重定向以及它如何处理参数
  • 那么,为什么不阅读文档和代码,而不是猜测答案呢?
  • 谢谢你这么说,我们去吧,我上面有正确的答案
  • 它仍然对我不起作用,当我单击注销时,它会将我重定向到 /localhost/files/index.phpcontroller/logout,index.php 和控制器之间没有“/”。出现多选错误
【解决方案2】:

修改代码

public function logout(){                //login

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

到

public function logout(){   

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2012-05-23
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多