如何使用Cookie的一个组成部分?(How to use cookies from a compo

2019-09-01 03:00发布

如何使用cookies在一个Joomla组件?

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

任何人都可以说明这是如何工作?

Answer 1:

// 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()饼干被删除(过期设置为过去)。 你可以通过设置它的值设置为null删除的cookie,但显然IE没有这样做。

笔记

请记住,头被发送之前的cookie应设置(通常是之前输出是呼应)。

Cookie的键和值应正确转义

非字符串值

当序列化设置的数值(如json_encode($dataNode)记得用适当的过滤器来检索它以后。 默认值是cmd ,过滤掉相当多的东西,但AZ,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

  • Joomla CMS的GitHub的仓库: JInputCookie ::设置 (非常有据可查)
  • PHP文档: php.net/setcookie (开发经验)
  • 维基百科: HTTP饼干 (理论)


文章来源: How to use cookies from a component?