Funkcja setcookie() w PHP
Przykład
Poniższy przykład tworzy plik cookie o nazwie „użytkownik” o wartości „John Doe”. Plik cookie wygaśnie po 30 dniach (86400 * 30). „/” oznacza, że plik cookie jest dostępny w całej witrynie (w przeciwnym razie wybierz preferowany katalog).
Następnie pobieramy wartość pliku cookie „user” (używając zmiennej globalnej $_COOKIE). Używamy również funkcji isset(), aby dowiedzieć się, czy plik cookie jest ustawiony:
<!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>
Definicja i użycie
Funkcja setcookie() definiuje plik cookie do wysłania wraz z pozostałymi nagłówkami HTTP.
Plik cookie jest często używany do identyfikacji użytkownika. Plik cookie to mały plik, który serwer osadza na komputerze użytkownika. Za każdym razem, gdy ten sam komputer zażąda strony z przeglądarką, wyśle również plik cookie. Dzięki PHP możesz zarówno tworzyć, jak i pobierać wartości plików cookie.
Nazwa ciasteczka jest automatycznie przypisywana do zmiennej o tej samej nazwie. Na przykład, jeśli wysłano ciasteczko o nazwie „użytkownik”, automatycznie tworzona jest zmienna o nazwie $user, zawierająca wartość ciasteczka.
Uwaga: Funkcja setcookie() musi pojawić się PRZED znacznikiem <html>.
Uwaga: wartość cookie jest automatycznie kodowana przez URL podczas wysyłania cookie i automatycznie dekodowana po otrzymaniu (aby zapobiec kodowaniu URL, użyj zamiast tego metody setrawcookie() ).
Składnia
setcookie(name, value, expire, path, domain, secure, httponly);
Wartości parametrów
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 |
Szczegóły techniczne
Wartość zwrotu: | PRAWDA o sukcesie. FAŁSZ w przypadku niepowodzenia |
---|---|
Wersja PHP: | 4+ |
Dziennik zmian PHP: | PHP 5.5 - Atrybut Max-Age został dołączony do nagłówka Set-Cookie wysłanego do klienta PHP 5.2 - Dodano parametr httponly |
Więcej przykładów
Przykład
Kilka dat wygaśnięcia plików cookie:
<?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>
Przykład
Aby zmodyfikować plik cookie, po prostu ustaw (ponownie) plik cookie za pomocą funkcji 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>
Przykład
Aby usunąć plik cookie, użyj funkcji setcookie() z datą wygaśnięcia w przeszłości:
<?php
// set the expiration date to one hour ago
setcookie("user", "", time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'user' is deleted.";
?>
</body>
</html>
Przykład
Utwórz mały skrypt, który sprawdza, czy pliki cookie są włączone. Najpierw spróbuj utworzyć testowe ciasteczko za pomocą funkcji setcookie(), a następnie policz zmienną tablicową $_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>
❮ Informacje o sieci PHP