0

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

4

3 回答 3

1

您没有分配pathcookie 的参数,因此它会获取它分配给它的页面的路径和结果是/login或类似的东西,它不会被发送到您的页面的其他部分,如/home,或只是根。setcookie()将like更改为如下所示:

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

此外,任何人都可以在他们的客户端中设置 cookie,只转发他们的存在,因为身份验证根本不安全,任何人都可以更改他们的usercookie 保存的内容。

于 2012-11-19T08:41:20.707 回答
0

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

于 2012-11-19T08:36:58.150 回答
0

查看CodeIgniter 用户指南 2.2.0 版:输入类

用于$this->input->set_cookie()设置cookie和$this->input->cookie()获取cookie

于 2012-11-19T08:41:22.597 回答