PHPのSlim3 Frameworkでcookieを管理するためのクラスです。
stackoverflowにあったコードを元に一部改修してます。
https://stackoverflow.com/questions/35257522/slim-3-framework-cookies
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
class Cookie
{
/**
* keyを指定してcookieの値を取得する
* @param Request $request
* @param string $key
* @param string $defaultValue
* @return string
*/
public function get(Request $request, $key, $defaultValue = null)
{
$cookies = $request->getCookieParams();
return isset($cookies[$key]) ? $cookies[$key] : $defaultValue;
}
/**
* 全てのcookie値を取得する
* @param Request $request
* @return array
*/
public function getAll(Request $request)
{
return $request->getCookieParams();
}
/**
* cookieに値をセットする
* @param Response $response
* @param string $key
* @param string $value
* @return Response
*/
public function set(Response $response, $key, $value, $expirationMinutes = 60)
{
$expiry = new \DateTimeImmutable('now + '.$expirationMinutes.'minutes');
$cookie = urlencode($key) . '=' . urlencode($value) .
'; expires=' . $expiry->format(\DateTime::COOKIE) .
'; Max-Age=' . $expirationMinutes * 60 .
'; path=/' .
'; httponly';
$response = $response->withAddedHeader('Set-Cookie', $cookie);
return $response;
}
/**
* cookieから値を削除する
* @param Response $response
* @param string $key
* @param string $value
* @return Response
*/
public function delete(Response $response, $key)
{
$cookie = urlencode($key) . '=' . urlencode('deleted') .
'; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; httponly';
$response = $response->withAddedHeader('Set-Cookie', $cookie);
return $response;
}
}
こちらもおススメ