php codeigniter中的cookie设置不正确?

php codeigniter中的cookie设置不正确?,php,codeigniter,cookies,Php,Codeigniter,Cookies,我已经在codeigniter中创建了基于cookie的基本登录设置。 像这样 class Display extends CI_Controller { public function Display() { parent::__construct(); } public function index() { //var_dump($_COOKIE); if (isset($_COOKIE["user"])){ redirect('home')

我已经在codeigniter中创建了基于cookie的基本登录设置。 像这样

class Display extends CI_Controller {
public function Display() {
    parent::__construct();
}
public function index() {
    //var_dump($_COOKIE);
    if (isset($_COOKIE["user"])){
        redirect('home')
    }else{
        redirect('display/login');
    }

}
public function login() {
    //var_dump($_COOKIE);
    if (isset($_COOKIE["user"])){
        $this->load->view('home');
    }else{
        $username = $this->input->post('username');
                    //some validation
        setcookie("user",$username,time()+60*60*24*30);
        redirect('home');
    }
}
}

在home controller中,我检查cookies以访问页面

class Home extends CI_Controller {
public function Home() {
    parent::__construct();
    //var_dump(get_cookie("user"));exit;
     if (isset($_COOKIE["user"]) == false){
     redirect('display/login');
    }
}
}


我在这里面临的问题是我无法在类的构造函数中获取cookie。在访问类中的任何函数之前,我需要检查类中的cookie。正确的方法是什么?。提前感谢。

您最好使用CodeIgniter自己的实现(Cookie\u Helper):

您不分配Cookie的参数,因此它会获得分配给它的页面路径,结果是
/login
或类似的内容,并且不会发送到页面的其他部分,如
/home
,或者仅仅是根。将
setcookie()
like更改为如下内容:

setcookie("user",$username,time()+60*60*24*30, '/'); // notice the added path at the end
此外,任何人都可以在其客户机中设置cookie,因为身份验证根本不安全,所以只能中继cookie的存在。任何人都可以更改其
用户
cookie的内容。

签出


使用
$this->input->set_cookie()
设置cookie,使用
$this->input->cookie()
获取cookie

出于好奇,您是否试图在设置cookie的相同请求中获取cookie?@diggersworld基本上是我使用get_cookie().检查一下这一点,我不担心项目的安全性,这很基本。谢谢