如何在Joomla组件中使用cookie?
setcookie( JUtility::getHash('JLOGIN_REMEMBER'),false,time() - 86400,'/' );
谁能描述一下这是如何工作的?
解决方法
// Get input cookie object $inputCookie = JFactory::getApplication()->input->cookie; // Get cookie data $value = $inputCookie->get($name = 'myCookie',$defaultValue = null); // Check that cookie exists $cookieExists = ($value !== null); // Set cookie data $inputCookie->set($name = 'myCookie',$value = '123',$expire = 0); // Remove cookie $inputCookie->set('myCookie',null,time() - 1);
关于$expire值的一些规则
>以秒为单位的Unix tinestamp,如time()的返回值.
> $expire == 0:cookie生命周期是浏览器会话.
> $expire< time():正在删除cookie(过期设置为过去).
您可以通过将其值设置为null来删除cookie,但显然IE无法执行此操作.
笔记
请记住,应在发送标头之前设置cookie(通常在回显输出之前).
应正确转义Cookie密钥和值
非字符串值
序列化set上的值(如json_encode($datanode))时,请记住使用适当的过滤器以便稍后检索它.默认值是cmd,除了a-Z,0-9和破解JSON结构之外几乎可以过滤掉任何东西.
// Get cookie data $encodedString = $inputCookie->get('myCookie',$filter = 'string'); // Decode $values = json_decode($encodedString); // Encode and Set $inputCookie->set('myCookie',json_encode($values));
Rererences
> Joomla CMS github存储库:JInputCookie::set(记录完备)
> PHP docs:php.net/setcookie(开发者体验)
>维基百科:HTTP Cookies(理论)