调用函数在codeigniter中给出了404页面

时间:2014-05-23 04:25:21

标签: php codeigniter

我从视图中调用控制器的注销功能。 为了抬头,我已经制作了项目的模块化结构,当我转到http://my-local-project.com/admin时,它会加载我的管理控制器的索引功能。但是当我转到http://my-local-project.com/admin/logout时,它会显示404页面 我的目录结构是

  • 应用/
    • 控制器/
      • 管理员/
        • admin.php的

控制器:

    <?php

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */

    /**
     * Description of TestController
     *
     * @author Ibm
     */
    class Admin extends CI_Controller {
        function __construct() {


            parent::__construct(); //call to parent constructor
            $this->data = "";
            $this->header = $this->load->view('admin/header', $this->data, TRUE);
            $this->template = $this->load->view('admin/template', $this->data, TRUE);
            $this->footer = $this->load->view('admin/footer', $this->data, TRUE);
            $this->load->helper('url');
            // $this->loginModel    =   $this->load->model('admin/loginModel');
            session_start();
        }
        public function index() {

            echo "all is well";
        }
public function logout() {
        $userSessionData = array(
            'user_id' => '',
            'username' => '',
            'email' => ''
        );
        $this->session->unset_userdata($userSessionData);
        $this->session->sess_destroy();
        session_destroy();
        redirect(base_url('admin/login'));
        exit;
    }
            }

    ?>

在这里我想像这样调用这个函数

 <a href="<?php echo site_url()?>admin/logout">Sign Out</a>

修改 我的routes.php是

$route['default_controller'] = "welcome";
$route['admin(/:any)'] = "admin/admin$1";

4 个答案:

答案 0 :(得分:0)

您必须重定向到某个页面,或者必须在您尝试从网址调用的函数中加载视图页面。所以试试这个

public function logout()
{
    $userSessionData = array(
        'user_id' => '',
        'username' => '',
        'email' => ''
    );
    $this->session->unset_userdata($userSessionData);// unset your sessions
    $this->session->sess_destroy();   
    redirect('admin/index');     // redirect to admin index page
}

答案 1 :(得分:0)

您的app目录有2个admin段。 1.文件夹(/ admin /),2。文件(admin.php)

网址应该与http://my-local-project.com/admin/admin/logout

类似

如果你不想这样,你必须设置路线:

$route['admin']        = "admin/admin/index";
$route['admin/(:any)'] = "admin/admin/$1";

或使用CodeIgniter Modular Extensions - HMVC:

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

答案 2 :(得分:0)

只需销毁会话并重定向......

$this->session->sess_destroy();
redirect('controller/method');

答案 3 :(得分:0)

在路线中:

$route['logout'] = "admin/admin/logout";

$route['admin'] = "admin/admin";

并将注销调用为<a href="<?php echo base_url()?>logout">Sign Out</a>

通过这种方式,您将调用管理模块中的注销功能 - &gt; admin class - &gt; logout function

并在注销中按照你的方式销毁会话并使用重定向(&#39; admin&#39;),它会将你重定向到控制器索引(因为它在路由中定义)