cookie在php codeigniter中设置不正确?

时间:2012-11-19 08:35:30

标签: 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')
    }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');
    }
}

}

在家庭控制器中,我检查cookie以访问该页面

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。什么是正确的方法呢?提前谢谢。

3 个答案:

答案 0 :(得分:1)

您没有分配Cookie的path参数,因此它会获取分配它的页面的路径,结果为/login或类似的内容,并且不会发送到您的网页的其他部分,如/home,或只是根。将setcookie()改为喜欢这样的东西:

setcookie("user",$username,time()+60*60*24*30, '/'); // notice the added path at the end

此外,任何人都可以在他们的客户端设置cookie,仅传递他们的存在,因为身份验证根本不安全,任何人都可以更改他们user cookie所拥有的内容。

答案 1 :(得分:0)

使用CodeIgniter自己的实现(Cookie_Helper)可能会更好:http://ellislab.com/codeigniter/user_guide/helpers/cookie_helper.html

答案 2 :(得分:0)

查看CodeIgniter User Guide Version 2.2.0: Input Class

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