Cookies
Cookies são gerenciados com um pote de cookies que usa um formato prefixado para isolar os cookies por contexto que compartilhem atributos em comum. Além dos parâmetros usuais, o atributo Partitioned também é suportado.
Criando um pote de biscoitos
Um exemplo básico para definir 3 cookies:
use Inphinit\Experimental\Http\CookieJar;
$jar = new CookieJar('sample');
$jar->foo = 1;
$jar->bar = 2.5;
$jar->baz = 'text';
$jar->setExpires('+1 week');
$jar->setHttpOnly(true);
$jar->setPartitioned(true);
$jar->send();
Ao usar o método send, cabeçalhos como este serão enviados na resposta:
Set-Cookie: sample:foo=1; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:42:30 GMT
Set-Cookie: sample:bar=2; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:42:30 GMT
Set-Cookie: sample:baz=3; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:42:30 GMT
Deletando cookies:
Deletando um cookie:
use Inphinit\Experimental\Http\CookieJar;
$jar = new CookieJar('sample');
$jar->foo = null;
$jar->bar = null;
$jar->baz = '3';
$jar->send();
Ao usar o método send, cabeçalhos como este serão enviados na resposta:
Set-Cookie: sample:foo=_; Path=/; HttpOnly; Partitioned; Secure; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0
Set-Cookie: sample:bar=_; Path=/; HttpOnly; Partitioned; Secure; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0
Set-Cookie: sample:baz=3; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:45:48 GMT
API
| Uso | Descrição |
|---|---|
setDomain($domain) |
Define o host para o qual o cookie será enviado. Observação: ao contrário das especificações anteriores, os pontos iniciais nos nomes de domínio (.example.com) são ignorados.
|
setExpires(string $datetime) |
Indicates the maximum lifetime of the cookies. Note: Accept English textual datetime
descriptions (e.g., '+1 day', 'last Monday').
Indica a duração máxima dos cookies. Nota: Aceita descrições de data e hora em inglês (por exemplo, '+1 day', 'last Monday').
|
setHttpOnly(bool $enable) |
Forbids JavaScript from accessing the cookie, for example,
through the document.cookie property.
Impede que o JavaScript acesse o cookie, por exemplo, através da propriedade document.cookie.
|
setPartitioned(bool $enable) |
Indicates that the cookie should be stored using partitioned storage. Note that if this is set, the Secure directive must also be set. Indica que o cookie deve ser armazenado usando armazenamento particionado. Observe que, se esta opção estiver definida, a diretiva Secure também deverá ser definida. |
setPath(string $path) |
Indica o caminho que deve existir no URL solicitado para que o navegador envie o cabeçalho Cookie. |
setSameSite(int $mode) |
Controla se um cookie é enviado ou não com solicitações entre sites diferentes. |
setSecure(bool $enable) |
Indica que o cookie é enviado ao servidor apenas quando uma solicitação é feita com o esquema https (exceto em localhost) e, portanto, é mais resistente a ataques do tipo man-in-the-middle. |
Constants
As seguintes constantes devem ser usadas com o método setSameSite():
| Uso | Descrição |
|---|---|
SAME_LAX |
Enviar cookies apenas para solicitações originadas do mesmo site que definiu o cookie e para
solicitações entre sites que atendam aos dois critérios a seguir.
|
SAME_NONE |
Envie o cookie tanto para solicitações "entre sites" quanto para solicitações "no mesmo site". |
SAME_STRICT |
Enviar cookies somente para solicitações originadas do mesmo site que definiu o cookie. |
Examplo:
use Inphinit\Experimental\Http\CookieJar;
$jar = new CookieJar('sample');
...
$jar->setSameSite(CookieJar::SAME_STRICT);
$jar->send();