International PHP Conference Berlin 2025

setrawcookie

(PHP 5, PHP 7, PHP 8)

setrawcookieEnvie um cookie sem codificar em URL o valor do cookie

Descrição

setrawcookie(
    string $name,
    string $value = ?,
    int $expires_or_options = 0,
    string $path = ?,
    string $domain = ?,
    bool $secure = false,
    bool $httponly = false
): bool

Assinatura alternativa disponível a partir do PHP 7.3.0 (não suportada com parâmetros nomeados):

setrawcookie(string $name, string $value = ?, array $options = []): bool

setrawcookie() é exatamente o mesmo que setcookie() exceto que o valor do cookie não será automaticamente codificado em URL quando enviado ao navegador.

Parâmetros

Para informações sobre parâmetros, consulte a documentação da função setcookie().

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Registro de Alterações

Versão Descrição
7.3.0 Uma assinatura alternativa que suporta um array options foi adicionada. Esta assinatura também suporta a configuração do atributo de cookie "SameSite".

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
25
Brian
18 years ago
Firefox is following the real spec and does not decode '+' to space...in fact it further encodes them to '%2B' to store the cookie. If you read a cookie using javascript and unescape it, all your spaces will be turned to '+'.
To fix this problem, use setrawcookie and rawurlencode:

<?php
setrawcookie
('cookie_name', rawurlencode($value), time()+60*60*24*365);
?>

The only change is that spaces will be encoded to '%20' instead of '+' and will now decode properly.
up
11
subs at voracity dot org
18 years ago
setrawcookie() isn't entirely 'raw'. It will check the value for invalid characters, and then disallow the cookie if there are any. These are the invalid characters to keep in mind: ',;<space>\t\r\n\013\014'.

Note that comma, space and tab are three of the invalid characters. IE, Firefox and Opera work fine with these characters, and PHP reads cookies containing them fine as well. However, if you want to use these characters in cookies that you set from php, you need to use header().
To Top