我从视图中调用控制器的注销功能。
为了抬头,我已经制作了项目的模块化结构,当我转到http://my-local-project.com/admin
时,它会加载我的管理控制器的索引功能。但是当我转到http://my-local-project.com/admin/logout
时,它会显示404页面
我的目录结构是
控制器:
<?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";
答案 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;),它会将你重定向到控制器索引(因为它在路由中定义)