2011-12-27 18 views
5

Voglio impostare un cookie tramite PHP. Lo scenario è simile a questo:Come impostare Cookie in PHP per dominio

dominio è: example.com

C'è una pagina web sul sottodominio (my.example.com). Il mio codice è:

$value="I am looged in"; 
setcookie("TestCookie", $value,'','',".example.com"); 
echo "hello".$_COOKIE["TestCookie"]; 

ma il risultato è solo "ciao" - il cookie non viene impostato. Si prega di suggerire la possibile soluzione.

Grazie!

+0

funziona quando si utilizza: setcookie ("TestCookie", $ value); – Yogesh

+0

Per semplificare la gestione dei cookie, in particolare per quanto riguarda la proprietà "dominio", è possibile utilizzare questo: https://github.com/delight-im/PHP-Cookie – caw

+0

Si potrebbe trovare ['$ cookie-> setDomain ($ dominio) '] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117) utile, come trovato in [questa libreria standalone] (https://github.com)/delizia-im/PHP-Cookie). – caw

risposta

9

Prime due correzioni al richiamo effettivo di setcookie: il parametro 3 (expired) deve essere un valore intero (il valore predefinito è 0); il parametro quattro deve essere impostato su '/' per rendere il cookie valido per tutte le sottodirectory; la chiamata setcookie dovrebbe quindi simile a questa:

setcookie("TestCookie", $value, 0, '/', ".example.com"); 

Allora dovrebbe realmente funzionare la seconda volta che lo script viene chiamato. Per capire perché non funzionerà già per la prima volta, dobbiamo scavare un po 'nello into how cookies work; In pratica, i cookie sono dati inviati dal server al client, dove il server dice "inviami questi dati la prossima volta che mi invii una richiesta". Questo è fondamentalmente ciò che è per setcookie: quando la richiesta viene eseguita e il client ha ricevuto ed elaborato la pagina, il cookie come specificato sarà stato creato sul client; $_COOKIE, d'altra parte, contiene tutti i valori che sono nei cookie già e che sono stati trasmessi dal client insieme alla richiesta - il che significa che la prima volta che viene chiamato lo script, $ _SESSION sarà ancora vuoto, poiché i cookie verranno creati solo dopo che il client avrà ricevuto l'output degli script.

+0

Grazie mille per aver spiegato le cose! Questo funziona per me. – Yogesh

Problemi correlati