setcookie

setcookie -- Wysyła ciasteczko

Opis

int setcookie ( string nazwa [, string wartość [, int data_ważności [, string ścieżka [, string domena [, int bezpieczne]]]]])

setcookie( ) określa ciasteczko (ang . cookie ) do wysłania z nagłówkami HTTP . Ciasteczko musi być wysłane zanim jakiekolwiek inne nagłówki zostaną wysłane ( to jest ograniczenie ciasteczek , nie PHP ) . To wymaga od ciebie umieszczenia wywołań tej funkcji przed znacznikami html czy head .

Wszystkie argumenty poza nazwa opcjonalne . Jeśli tylko argument nazwa jest obecny , ciasteczko o takie nazwie zostanie usunięte z klienta . Możesz też opuścić argumenty za pomocą pustego łańcucha ( " " ) . Argumenty data_ważności i bezpieczne liczbami całkowitymi i nie można ich opuścić wstawiając pusty łańcuch . Zamiast niego użyj liczby zero ( 0 ) . Argument data_ważności jest regularnym uniksowym znacznikiem czasu , takim jak zwracany przez funkcje time( ) lub mktime ( ) . Argument bezpieczne oznacza , że ciasteczko może być przekazywane tylko poprzez bezpieczne połączenie HTTPS .

Wysłane ciasteczko jest dostępne już przy następnym załadowaniu strony w tablicy $_COOKIE . W wersjach PHP do 4.1.0 była to tablica $HTTP_COOKIE_VARS .

Częste pułapki :



W PHP 3 , wielokrotne wywołania setcookie( ) w jednym skrypcie wykonywane były w odwrotnej kolejności . Jeśli chcesz usunąć jedno ciastko przed wprowadzeniem kolejnego , powinieneś umieścić wprowadzenie nowego przed usunęciem starego . W PHP 4 , wielokrotne wywołania setcookie( ) wykonywane we właściwej kolejności .

Parę przykładów - jak wysyłać ciasteczka :

Przykład 1 . setcookie( ) wysyła przykładowe ciasteczka

 
setcookie

 
(

 
"TestCookie"

 
,

 
$value)

 
;

 
setcookie

 
("TestCookie"

 
,

 
$value,time()+3600)

 
;

 
/

 
*

 
traci

 
ważność

 
za

 
godzinę

 
*

 
/

 
setcookie

 
("TestCookie"

 
,

 
$value,time()+3600

 
,

 
"

 
/

 
~rasmus

 
/

 
"

 
,

 
".utoronto.ca"

 
,

 
1)

 
;





Aby skasować ciasteczko , należy ustawić datę ważności na datę w przeszłości , co uruchomi w przeglądarce mechanizm kasowania ciasteczek . A teraz , jak usunąć ciasteczka z poprzedniego przykładu :

Przykład 2 . Kasowanie ciasteczek

 
/

 
/

 
ustaw

 
datę

 
ważności

 
na

 
godzinę

 
wstecz

 
setcookie

 
(

 
"TestCookie"

 
,

 
""

 
,

 
time(

 
)

 
-

 
3600)

 
;

 
setcookie

 
("TestCookie"

 
,

 
""

 
,

 
time(

 
)

 
-

 
3600

 
,

 
"

 
/

 
~rasmus

 
/

 
"

 
,

 
".utoronto.ca"

 
,

 
1)

 
;





Proszę zwrócić uwagę , że zawartość ciasteczka jest automatycznie kodowana do formatu URL przy wysyłaniu , a po odebraniu automatycznie dekodowana i przypisywana do zmiennej o tej samej nazwie co ciasteczko . Aby poznać zawartość przykładowego ciasteczka ze skryptu , należy zastosować poniższy przykład :

 
echo

 
$TestCookie

 
;

 
echo

 
$_COOKIE["TestCookie"]

 
;





Można też tworzyć tablice złożone z ciasteczek za pomocą zapisu tablicowego w nazwie ciasteczka . Powoduje to utworzenie tylu ciasteczek , ile jest elemetów tablicy , a po otrzymaniu takiego ciasteczka , jego wartości umieszczane w tablicy o nazwie takiej jak ciasteczko .

 
setcookie

 
(

 
"cookie[three]"

 
,

 
"cookiethree")

 
;

 
setcookie

 
("cookie[two]"

 
,

 
"cookietwo")

 
;

 
setcookie

 
("cookie[one]"

 
,

 
"cookieone")

 
;

 
if

 
(isset

 
($cookie)

 
)

 
{

 
while

 
(list

 
($name

 
,

 
$value

 
)

 
=

 
each

 
($cookie)

 
)

 
{

 
echo

 
"$name

 
==

 
$value

 
lt;br

 
\n"

 
;

 
    }

 
}





Więcej informacji na temat ciasteczek znajduje się w specyfikacji Netscape ' a , na stronie http : / /www.netscape.com / newsref / std / cookie_spec.html .

Microsoft Internet Explorer 4 z zainstalowanym Service Pack 1 nie radzi sobie poprawnie z ciasteczkami , które mają ustawiony parametr ścieżka .

Netscape Communicator 4.05 i Microsoft Internet Explorer 3.x niepoprawnie obsługują ciasteczka , w których ścieżka i data_ważności nie ustawione .