CI框架存储cookie相关
在ci框架中有3种方法可以设置cookie。
1.原生的php方法
bool setcookie ( string $name
[, string $value
= "" [, int $expire
= 0 [, string $path
= "" [, string $domain
= "" [, bool $secure
= false [, bool$httponly
= false ]]]]]] )
相关的参数都比较明显
所以我们可以setcookie("username", 'xx');这样设置。
2.input方法
$this->input->set_cookie("username", 'xx',3600);
3.cookie辅助方法
$this->load->helper('cookie');
set_cookie("username", 'xx',3600);
在使用CI框架自带的这个方法的时候需要注意,如果版本是3.1.3或者其他版本(自己需要试试)在使用方法2和3的时候一定需要填写销毁时间,不然不能正常设置cookie。
其实看代码我们可以发现方法3是调用方法2,方法2调用的是方法1,在调用的过程中进行了一些设置,可以方便使用。
在system/core/Input.php文件中,我们可以看到
if ( ! is_numeric($expire)) {
$expire = time() - 86500;
}velse {
$expire = ($expire > 0) ? time() + $expire : 0;
}
2
3
4
5
所以当我们没有给$this->input->set_cookie($name, $value = '', $expire = '', $domain = '', $path = '/', $prefix = '', $secure = FALSE, $httponly = FALSE)传递$expire参数的时候是不能正常设置参数的,因为这个方法调用的是php自带的setcookie()方法,在这个方法中,$expire可以传一个time()+的时间表示多久销毁,如果不传或者设置为0的话则表示当前会话,随浏览器关闭而销毁。但是不能传一个time()-的时间,不然就没有实际意义,浏览器也不会存储这个cookie的。
所以要设置cookie的需要注意了,一定要加$expire参数,不然是设置不成功的。