Função PHP setcookie()
Exemplo
O exemplo a seguir cria um cookie chamado "user" com o valor "John Doe". O cookie expirará após 30 dias (86400 * 30). O "/" significa que o cookie está disponível em todo o site (caso contrário, selecione o diretório de sua preferência).
Em seguida, recuperamos o valor do cookie "user" (usando a variável global $_COOKIE). Também usamos a função isset() para descobrir se o cookie está definido:
<!DOCTYPE html>
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
Definição e uso
A função setcookie() define um cookie a ser enviado junto com o restante dos cabeçalhos HTTP.
Um cookie é frequentemente usado para identificar um usuário. Um cookie é um pequeno arquivo que o servidor incorpora no computador do usuário. Cada vez que o mesmo computador solicita uma página com um navegador, ele também enviará o cookie. Com o PHP, você pode criar e recuperar valores de cookies.
O nome do cookie é atribuído automaticamente a uma variável com o mesmo nome. Por exemplo, se um cookie foi enviado com o nome "user", é criada automaticamente uma variável chamada $user, contendo o valor do cookie.
Nota: A função setcookie() deve aparecer ANTES da tag <html>.
Nota: O valor do cookie é automaticamente codificado em URL ao enviar o cookie e decodificado automaticamente quando recebido (para evitar a codificação de URL, use setrawcookie() ).
Sintaxe
setcookie(name, value, expire, path, domain, secure, httponly);
Valores de parâmetro
Parameter | Description |
---|---|
name | Required. Specifies the name of the cookie |
value | Optional. Specifies the value of the cookie |
expire | Optional. Specifies when the cookie expires. The value: time()+86400*30, will set the cookie to expire in 30 days. If this parameter is omitted or set to 0, the cookie will expire at the end of the session (when the browser closes). Default is 0 |
path | Optional. Specifies the server path of the cookie. If set to "/", the cookie will be available within the entire domain. If set to "/php/", the cookie will only be available within the php directory and all sub-directories of php. The default value is the current directory that the cookie is being set in |
domain | Optional. Specifies the domain name of the cookie. To make the cookie available on all subdomains of example.com, set domain to "example.com". Setting it to www.example.com will make the cookie only available in the www subdomain |
secure | Optional. Specifies whether or not the cookie should only be transmitted over a secure HTTPS connection. TRUE indicates that the cookie will only be set if a secure connection exists. Default is FALSE |
httponly | Optional. If set to TRUE the cookie will be accessible only through the HTTP protocol (the cookie will not be accessible by scripting languages). This setting can help to reduce identity theft through XSS attacks. Default is FALSE |
Detalhes técnicos
Valor de retorno: | VERDADEIRO no sucesso. FALSO em caso de falha |
---|---|
Versão do PHP: | 4+ |
Registro de alterações do PHP: | PHP 5.5 - Um atributo Max-Age foi incluído no cabeçalho Set-Cookie enviado ao cliente PHP 5.2 - O parâmetro httponly foi adicionado |
Mais exemplos
Exemplo
Várias datas de expiração para cookies:
<?php
$value = "Hello world!";
// cookie will expire when the browser close
setcookie("myCookie", $value);
// cookie will expire in 1 hour
setcookie("myCookie", $value, time() + 3600);
// cookie will expire in 1 hour, and will only be available
// within the php directory + all sub-directories of php
setcookie("myCookie", $value, time() + 3600, "/php/");
?>
<html>
<body>
...some code...
</body>
</html>
Exemplo
Para modificar um cookie, basta definir (novamente) o cookie usando a função setcookie():
<?php
$cookie_name = "user";
$cookie_value = "Alex Porter";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
Exemplo
Para excluir um cookie, use a função setcookie() com data de validade no passado:
<?php
// set the expiration date to one hour ago
setcookie("user", "", time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'user' is deleted.";
?>
</body>
</html>
Exemplo
Crie um pequeno script que verifique se os cookies estão ativados. Primeiro, tente criar um cookie de teste com a função setcookie(), então conte a variável de array $_COOKIE:
<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>
<?php
if(count($_COOKIE) > 0) {
echo "Cookies are enabled.";
} else {
echo "Cookies are disabled.";
}
?>
</body>
</html>
❮ Referência de Rede PHP