【发布时间】:2016-03-07 05:37:17
【问题描述】:
用户可以正常登录,但是当按下注销时,会出现错误。但是,在用户下方仍处于登录状态,当再次按下注销按钮时,它实际上已注销(但仍然出现上面的错误)。任何人都可以帮忙吗?错误如下。
严重性:警告
消息:无法修改标头信息 - 标头已由 (输出开始于 /customers/2/e/e/jessicarosedavidson.co.uk/httpd.www/codeigniter/application/models/Login_model.php:41)
文件名:Session/Session_driver.php
行号:110
回溯:
文件: /customers/2/e/e/jessicarosedavidson.co.uk/httpd.www/codeigniter/application/controllers/Login.php 行:59 函数:session_destroy
文件: /customers/2/e/e/jessicarosedavidson.co.uk/httpd.www/codeigniter/index.php 行:292 功能:require_once
这是我的登录模型
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function login($email, $password)
{
$this->db->where("email",$email);
$this->db->where("password",$password);
$query=$this->db->get("mvc_user");
if($query->num_rows()>0)
{
foreach($query->result() as $rows)
{
//add all data to session
$newdata = array(
'user_id' => $rows->id,
'user_name' => $rows->username,
'user_email' => $rows->email,
'logged_in' => TRUE,
);
}
$this->session->set_userdata($newdata);
return true;
}
return false;
}
}
?>
这是我的控制器 Login.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->model('login_model');
}
public function index()
{
if(($this->session->userdata('user_name')!=""))
{
$this->welcome();
}
else {
$data['title']= 'Login';
$this->load->view('templates/header', $data);
$this->load->view('templates/nav');
$this->load->view('login/signin', $data);
$this->load->view('templates/footer');
}
}
public function welcome()
{
$data['title']= 'Welcome';
$this->load->view('templates/header', $data);
$this->load->view('templates/nav');
$this->load->view('login/welcome', $data);
$this->load->view('templates/footer');
}
public function login()
{
$email=$this->input->post('email');
$password=$this->input->post('pass');
$result=$this->login_model->login($email,$password);
if($result) $this->welcome();
else $this->index();
}
public function logout()
{
$newdata = array(
'user_id' =>'',
'user_name' =>'',
'user_email' => '',
'logged_in' => FALSE,
);
$this->session->unset_userdata($newdata );
$this->session->sess_destroy();
$this->index();
}
}
?>
我的视图位于视图文件中名为 login 的文件中。任何帮助都将不胜感激,因为我是 codeigniter 的新手!!
【问题讨论】:
-
在注销功能中,您可以尝试重定向到索引而不是简单地调用
$this->index();,因为在sess_destroy()之后,必须重新加载 Sessions 类,然后才能对其进行任何调用。这是你在index()做的第一件事。 -
附带说明,
$this->session->unset_userdata($newdata );不需要,因为sess_destroy()将处理所有会话数据。
标签: php apache function codeigniter