首页 > 解决方案 > 跳转到另一个页面时php cookie更改为NULL

问题描述

在我的控制器/Welcome.php 中,我包含了一个登录功能。Rhis 不是完整的代码。我只包含代码的关键部分,以便您可以更清楚地阅读它。我将默认设置login_statusfalse. 当用户有正确的用户名和密码时,login_status设置为true. 但是,在我的项目/Home.php 中,我尝试检索 cookie“login_status”。但 cookie 变成NULL. 代码的关键部分如下:

控制器/Welcome.php 公共函数 login()


        $this->input->set_cookie('login_status',FALSE,time()+3600);//delete or not

        if($this->input->cookie('login_status')==FALSE){    

            //The following code means login password match the username
            elseif($infomatch){

                if($remember == 1){
                    $this->input->set_cookie('username',$username,time()+3600);
                    $this->input->set_cookie('password',$password,time()+3600);
                    $this->input->set_cookie('remember',$remember,time()+3600);
                }
                else
                {
                    $this->input->set_cookie('username',"",time()-3600);
                    $this->input->set_cookie('password',"",time()-3600);
                    $this->input->set_cookie('remember',"",time()-3600);
                }
                $this->input->set_cookie('login_status',TRUE,time()+3600);//hihihihihi
                redirect('home');

            }

    }

控制器/Home.php

if($this->input->cookie('login_status')==FALSE){
            header("location: Welcome/login");
        } else{


            $this->session->set_userdata('login_status',TRUE);

            $this->load->database();
            $this->load->model('scheduler_model');
            $this->load->view('header.php');

            $data['username'] = $this->session->userdata('username');

            $data["getnames"]=$this->scheduler_model->get_users();
            $this->load->view('home/homepage',$data);

            $data["getassignments"]=$this->scheduler_model->get_assignment();
            $data["getselectedcourses"]=$this->scheduler_model->get_select_course();
            $this->load->view('home/assignments',$data);  
        }

标签: phpcodeigniterauthenticationcookies

解决方案


Cookie 是纯文本。您不能在 Cookie 中存储布尔值。您可以做的是存储一个表示布尔值的字符串。例如:1 for true0 for false

$this->input->set_cookie('login_status','0',3600); //set it to '1' in the log in process
//also notice: expiration is how long it should remain in seconds

去检查

if($this->input->cookie('login_status')== '0'){

推荐阅读