01 Управление куками
Куки очень полезный способ хранения маленьких фрагментов данных на стороне клиента, которые могут быть получены, даже если пользователь закроет свой браузер. Phalcon\Http\Response\Cookies выступает в качестве глобального хранилища для кук. Куки хранятся в таком хранилище во время выполнения запроса и отправляются автоматически по его окончанию.
Базовое использование
Вы можете установить или извлечь куки простым обращением к сервису cookies
из любого места в приложении:
<?php use Phalcon\Mvc\Controller; class SessionController extends Controller { public function loginAction() { // Проверить, установлен ли cookie ранее if ($this->cookies->has('remember-me')) { // Получить файл cookie $rememberMeCookie = $this->cookies->get('remember-me'); // Получить значение cookie $value = $rememberMeCookie->getValue(); } } public function startAction() { $this->cookies->set( 'remember-me', 'some value', time() + 15 * 86400 ); $this->cookies->send(); } public function logoutAction() { $rememberMeCookie = $this->cookies->get('remember-me'); // Удалить файл cookie $rememberMeCookie->delete(); } }
Шифрование/дешифрование кук
По умолчанию Куки автоматически шифруются перед отправкой клиенту и расшифровываются при получении. Такая защита не позволяет неавторизированным пользователям видеть содержимое кук на стороне клиента (в браузере). Но несмотря на это, хранить в них конфиденциальные (персональные) данные не следует.
Вы можете отключить шифрование следующим образом:
<?php use Phalcon\Http\Response\Cookies; $di->set( 'cookies', function () { $cookies = new Cookies(); $cookies->useEncryption(false); return $cookies; } );
При использовании шифрования должен быть установлен глобальный ключ в сервисе crypt:
<?php use Phalcon\Crypt; $di->set( 'crypt', function () { $crypt = new Crypt(); /** * Установить алгоритм шифрования. * * "Aes-256-gcm" является предпочтительным шифром, но он не может использоваться, * пока библиотека openssl не будет обновлена, которая доступна в PHP 7.1. * * "AES-256-ctr", возможно, является лучшим выбором для * алгоритма шифрования в эти дни. */ $crypt->setCipher('aes-256-ctr'); /** * Настройка ключа шифрования. * * Ключ должен был быть предварительно сгенерирован криптографически безопасным способом. * * Неверный ключ: * "le password" * * Лучше (но все равно небезопасно): * "#1dj8$=dp?.ak//j1V$~%*0X" * * Хороший ключ: * "T4\xb1\x8d\xa9\x98\x054t7w!z%C*F-Jk\x98\x05\\\x5c" * * Используйте свой собственный ключ. Не копируйте и не вставляйте этот пример ключа. */ $key = "T4\xb1\x8d\xa9\x98\x054t7w!z%C*F-Jk\x98\x05\\\x5c"; $crypt->setKey($key); return $crypt; } );