Как использовать cookies из компонента?
Как использовать cookies в компоненте Joomla?
setcookie( JUtility::getHash('JLOGIN_REMEMBER'), false, time() - 86400, '/' );
может кто-нибудь описать, как это работает?
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()
: cookie удаляется (истекает в прошлое). Вы можете удалить cookie, установив его значение в null, но, по-видимому, IE не может этого сделать.
Примечания
имейте в виду, что cookies должны быть установлены перед отправкой заголовков (обычно перед эхом вывода).
ключ Cookie и значение должны быть правильно экранированы
нестроковые значения
при сериализации значения в set (например,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
- Joomla CMS github репозиторий: JInputCookie:: set (очень хорошо документированы)
- PHP docs:php.net/setcookie (опыт разработчика)
- Википедия: HTTP и cookie-файлы (теория)