如何使用组件中的cookie?

时间:2013-04-25 04:54:52

标签: joomla joomla2.5 joomla3.0 joomla3.1

如何在Joomla组件中使用Cookie?

setcookie( JUtility::getHash('JLOGIN_REMEMBER'), false, time() - 86400, '/' );

有人能说明这是如何运作的吗?

1 个答案:

答案 0 :(得分:27)

// 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密钥和值应正确转义

非字符串值

在序列化集合上的值时(如json_encode($dataNode)),请记住使用适当的过滤器以便稍后检索它。默认值为cmd,它除了a-Z,0-9和JSON结构之外几乎可以过滤掉任何东西。

// Get cookie data
$encodedString = $inputCookie->get('myCookie', null, $filter = 'string');

// Decode
$values = json_decode($encodedString);

// Encode and Set
$inputCookie->set('myCookie', json_encode($values));

Rererences