Entra

View Full Version : [PHP] cookie


dany84
04-02-2009, 15:02
Eccomi qui a rompere di nuovo su PHP :(

Dunque, ho una pagina in cui creo un cookie che mi servirebbe utilizzare poco dopo nella stessa pagina.
Il problema è che dopo aver creato il cookie, se provo a stamparne il valore, non mi stampa nulla, pur essendo presente nella memoria del browser.
Quello che ora mi chiedo è: per caso ci mette un po' a creare i cookie e quindi, se poche righe sotto vado a richiamare il cookie appena creato non me lo vede?
Se ricarico la pagina subito dopo mi fa vedere il valore correttamente.

Ecco il codice:
if (!isset($_COOKIE["mycookie"])) {
setcookie("mycookie", time());
}
echo $_COOKIE["mycookie"];

La funzione "echo" mi restituisce una stringa vuota. Dove sbaglio?

FixFixFix
04-02-2009, 16:59
credo che la spiegazione sia che il cookie viene elaborato sul server dall' engine PHP, il valore poi viene mandato al client ( browser ). Il client lo manda poi al server ogni volta che accederà a quel server. Nel tuo caso tu crei il cookie, poi fai la echo, ma nel momento in cui fai la echo stai ancora eseguendo codice sul server e non c'è ancora stato lo scambio di cookie tra server e client. Quando ricarichi la pagina, il client manda il cookie al server e a questo punto lui può fare la echo.

Cmq non vedo la necessità di dover usare subito il cookie, il suo scopo non è essere usato come variabile.

nel tuo caso metti un if in cui se il cookie non è settato , fai la echo di Time()

dany84
05-02-2009, 07:46
credo che la spiegazione sia che il cookie viene elaborato sul server dall' engine PHP, il valore poi viene mandato al client ( browser ). Il client lo manda poi al server ogni volta che accederà a quel server. Nel tuo caso tu crei il cookie, poi fai la echo, ma nel momento in cui fai la echo stai ancora eseguendo codice sul server e non c'è ancora stato lo scambio di cookie tra server e client. Quando ricarichi la pagina, il client manda il cookie al server e a questo punto lui può fare la echo.

Cmq non vedo la necessità di dover usare subito il cookie, il suo scopo non è essere usato come variabile.

nel tuo caso metti un if in cui se il cookie non è settato , fai la echo di Time()

Grazie della spiegazione :)
Quello postato era solo un esempio, nel senso che la mia pagina è molto più complessa e il cookie mi serve durante tutta la navigazione che l'utente fa nel sito, se no avresti ragione, utilizzarlo così non ha senso.
Vedrò di impostarlo all'inizio della navigazione e non in quella specifica pagina, che è raggiungibile solo dopo determinati click da parte dell'utente, in modo da averlo disponibile quando devo utilizzarlo.

FixFixFix
05-02-2009, 14:33
ti consiglierei di usare la session durante la navigazione, che è il suo uso naturale. Il cookie ti serve solo per ripristinare una sessione precedente

dany84
05-02-2009, 15:29
ti consiglierei di usare la session durante la navigazione, che è il suo uso naturale. Il cookie ti serve solo per ripristinare una sessione precedente

E' quello che avrei fatto anch'io, difatti il cookie che creo scade alla chiusura del browser, ma ho ricevuto disposizioni diverse per questo lavoro, per problemi che hanno avuto in passato utilizzando le sessioni. :boh:

cionci
05-02-2009, 17:51
E' quello che avrei fatto anch'io, difatti il cookie che creo scade alla chiusura del browser, ma ho ricevuto disposizioni diverse per questo lavoro, per problemi che hanno avuto in passato utilizzando le sessioni. :boh:
:confused:
Se funzionano i cookies funzionano anche le sessioni ;)

dany84
06-02-2009, 07:50
:confused:
Se funzionano i cookies funzionano anche le sessioni ;)

Guarda ti giuro che non ho capito mica perchè mi abbiano detto così :asd:
Mi han detto di utilizzare le sessioni solo in caso di login dell'utente, non so che dire :stordita:

FixFixFix
06-02-2009, 14:29
boh strano...se carpisci dettagli su questa scelta, facci sapere

anonimizzato
08-02-2009, 10:17
Si in effetti, usare un Cookie solo per la sessione corrente ha poco senso.

Utilizzo i Cookies per sfruttare la persistenza dei dati sul client, altrimenti le Sessioni sono molto più pratiche da gestire.