我已经在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。什么是正确的方法呢?提前谢谢。
答案 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