【问题标题】:Getting an error when logging out (CodeIgniter)注销时出错 (CodeIgniter)
【发布时间】: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-&gt;index();,因为在sess_destroy() 之后,必须重新加载 Sessions 类,然后才能对其进行任何调用。这是你在index() 做的第一件事。
  • 附带说明,$this-&gt;session-&gt;unset_userdata($newdata ); 不需要,因为sess_destroy() 将处理所有会话数据。

标签: php apache function codeigniter


【解决方案1】:

关于

无法修改标头信息 - file.php 已发送标头

在文件末尾删除模型中的多余空格,模型中的行数为 32 行,但错误为第 41 行 :),删除多余的行,一切都会正常!

希望对你有帮助

【讨论】:

    【解决方案2】:

    在 youpublic function welcome() 你没有检查会话。如果您将直接访问欢迎页面,即使在注销后它也可以工作并显示您的欢迎屏幕。您还需要检查它。 对于

    无法修改标头信息 - file.php 已发送标头

    您需要从控制器和标题顶部删除多余的空格。不确定,但您还需要删除视图顶部的多余空格。

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 2015-01-04
      • 1970-01-01
      • 2023-03-20
      • 2018-09-19
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多