PHP:cookie存在,但函数没有使用isset找到它
使用CodeIgniter,我通过使用isset函数检查cookie是否存在,并根据这一点重定向到其他控制器。现在我的问题是,我得到了一个重定向循环,因为check_logged_in函数认为cookie不存在 这是我的密码: 此函数驻留在登录帮助程序中 下一个函数驻留在主控制器中,并调用如上所述的check_logged_in函数PHP:cookie存在,但函数没有使用isset找到它,php,codeigniter,cookies,isset,Php,Codeigniter,Cookies,Isset,使用CodeIgniter,我通过使用isset函数检查cookie是否存在,并根据这一点重定向到其他控制器。现在我的问题是,我得到了一个重定向循环,因为check_logged_in函数认为cookie不存在 这是我的密码: 此函数驻留在登录帮助程序中 下一个函数驻留在主控制器中,并调用如上所述的check_logged_in函数 public function index() { $this->load->helper('url'); $this->load
public function index()
{
$this->load->helper('url');
$this->load->helper('login');
$logged_in = check_logged_in();
if($logged_in === TRUE)
{
$this->load->view('templates/header');
$this->load->view('pages/home_view');
$this->load->view('pages/advanced_search_view');
$this->load->view('pages/contact_information_view');
$this->load->view('templates/footer');
}
}
下一个函数驻留在用户控制器中
public function login()
{
if(isset($_COOKIE['uid']))
{
redirect(home);
}
else
{
-some unrelated code-
}
当cookie确实存在并且我运行home/index函数或users/login函数时,我最终进入了一个重定向循环。当cookie不存在时,我会在我的登录页面结束,因此看起来用户/登录cookie检查工作正常,但主/索引功能不正常
我试过把
if(!isset($_COOKIE['uid']))
{
redirect('users/login');
}
直接在home/index函数中,但它给出了相同的问题。将登录检查放在构造函数中。给它一个通用名称——让它做一些有用的事情,比如从cookie和/或数据库查找返回信息
function __construct() {
parent::__construct();
// load the model
$this->load->model( 'login_model' );
// if logged in, return $this->user
if(! $this->user = $this->login_model->verifyUser() )
{ redirect('users/login', 'refresh'); }
} // construct
现在$this->user可用于您的方法,一直到视图
如果你需要一个管理员,可以做更多的比用户,以同样的方式
$this->admin = $this->login_model->verifyAdmin() ;
然后您可以更改verifyAdmin中发生的事情,并且您的类不必更新 您是否尝试回显$\u COOKIE['uid']?它是空的吗?看起来那可能是一个好的开始。你如何设置饼干?Cookie的域,path?我在回显Cookie时得到它的值,在我的例子中是“1234”。我通过setcookie'uid',$uid;codeigniter已经有了cookie助手函数,设置cookie和获取cookie,为什么不使用这个函数呢。我不确定,但可能的codeigniter会在调用控制器之前清除全局阵列
$this->admin = $this->login_model->verifyAdmin() ;