mirror of
https://github.com/avecms/AVE.cms.git
synced 2026-08-01 08:45:44 +00:00
2.0 KiB
2.0 KiB
Cookie — работа с cookie
App\Helpers\Cookie — тонкая обёртка над setcookie/$_COOKIE.
use App\Helpers\Cookie;
Методы
set($key, $value, $expire = 86400, $domain = '', $path = '/', $secure = false, $httpOnly = false, $sameSite = 'Lax')
Установить cookie. По умолчанию живёт сутки. $expire — срок в секундах от
текущего момента. $sameSite принимает Lax, Strict или None; небезопасная
комбинация None без $secure=true автоматически становится Lax.
// на 30 дней, только https, недоступна из JS
Cookie::set('theme', 'dark', 3600 * 24 * 30, '', '/', true, true);
get($key = null, $default = null)
Прочитать cookie; без $key — все cookie.
$theme = Cookie::get('theme', 'light');
has($key) — есть ли cookie.
delete($key, $path = '/', $domain = '', $secure = null, $sameSite = 'Lax') — удалить.
if (Cookie::has('mp_auth')) { ... }
Cookie::delete('theme');
Практика
- Host-only cookie (важно на поддоменах — чтобы кука не «утекала» на другой
хост): оставляйте
$domainпустым. - httpOnly ставьте для всего, что не нужно читать из JS (сессии, токены) — снижает риск кражи через XSS.
- secure обязательно на боевом https.
- SameSite=Lax включён по умолчанию и подходит для сессии, actor и
remember-cookie.
Noneиспользуйте только для действительно межсайтового сценария и обязательно вместе сSecure.
// пример: персистентный вход
Cookie::set('mp_auth', $token, 3600 * 24 * 60, '', '/', true, true);