Документация для разработчиков
Темная тема

Cookie

Cookie - класс для работы с файлами cookie.

Аналоги в старом ядре:
CMain::set_cookie - для создания,
CMain::get_cookie - для получения.

В ядре D7 cookie задавать нужно через класс Bitrix\Main\HttpResponse, получать их нужно через класс Bitrix\Main\HttpRequest.

Примеры

use Bitrix\Main\Application;
use Bitrix\Main\Web\Cookie;
$cookie = new Cookie("TEST", 42);
$cookie->setDomain("example.com");
Application::getInstance()->getContext()->getResponse()->addCookie($cookie);
// Cookie будет доступна только на следующем хите!
echo Application::getInstance()->getContext()->getRequest()->getCookie("TEST");

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
1
Петр Неумоин
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
пишет:
Если вы будете добавлять cookie через ajax, подключая только prolog_before.php, то обязательно нужно обновить заголовки, иначе cookie на запишутся.
[CODE]  $application  = Application::getInstance();
$context  =  $application ->getContext();

$cookie  =  new  Cookie( "TEST" ,  12 , time() +  60 * 60 * 24 * 60 );
$cookie ->setDomain( $context ->getServer()->getHttpHost());
$cookie ->setHttpOnly( false );

$context ->getResponse()->addCookie( $cookie );
$context ->getResponse()->flush( "" ); [/CODE]
это больше не работает почему-то
5
Максим Иванов
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
Павел Дорошин пишет:
Если вы будете добавлять cookie через ajax, подключая только prolog_before.php, то обязательно нужно обновить заголовки, иначе cookie на запишутся.
[CODE]  $application  = Application::getInstance();
$context  =  $application ->getContext();

$cookie  =  new  Cookie( "TEST" ,  12 , time() +  60 * 60 * 24 * 60 );
$cookie ->setDomain( $context ->getServer()->getHttpHost());
$cookie ->setHttpOnly( false );

$context ->getResponse()->addCookie( $cookie );
$context ->getResponse()->flush( "" ); [/CODE]
После обновления bitrix эта строчка выдает ошибку
Код
$context->getResponse()->flush("");
заменил ее на
Код
 $context->getResponse()->writeHeaders("");
и все опять заработало
3
Кирилл Черныш
Если Вы ещё работаете на http
Код
$cookie->setSecure(false);
11
Павел Дорошин
Если вы будете добавлять cookie через ajax, подключая только prolog_before.php, то обязательно нужно обновить заголовки, иначе cookie на запишутся.
Код
$application = Application::getInstance();
$context = $application->getContext();

$cookie = new Cookie("TEST", 12, time() + 60*60*24*60);
$cookie->setDomain($context->getServer()->getHttpHost());
$cookie->setHttpOnly(false);

$context->getResponse()->addCookie($cookie);
$context->getResponse()->flush("");
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх