我在 codeigniter 中有一个注销 Controller :
<?php
class Logout extends MY_Controller {
function index()
{
$this->session->sess_destroy();
redirect('index.php');
}
}
这会让我退出,但是当我在登录后调用另一个 Controller 时,比如“/site/addnewpost”, 这只是让我再次登录,就好像 sassion 之前没有被破坏过一样。为什么会这样?
最佳答案
遵循 ALex 的建议,但使用 CI 代码:)。我的意思是,尝试单独取消设置每个 session 数据。我读过一次关于版本 2.0.3 中的一个问题,我想,但我现在不记得了,我也没有时间搜索引用。不过,它在他们的论坛中,建议是相同的:逐个取消设置每个 session 元素。
$this->session->unset_userdata('data_one');
$this->session->unset_userdata('data_two');
$this->session->unset_userdata('data_three');
$this->session->unset_userdata('data_one');
$this->session->sess_destroy();
redirect('home','refresh'); // <!-- note that
//you should specify the controller(/method) name here
您需要重定向,因为 CI 的 session 只是 cookie,而不是 native php session 数组。
另一件事...确保错误不在您的登录方法中,无论您是否成功注销,它都会让您登录!
关于php - 注销代码点火器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8616887/