-
il Cookie smarrito
Immaginate una cosa del genere:
1) leggo il mio cookie con $c = $_COOKIE['roby'];
2) viene eseguito un grande script di cui non so cosa fa, ma certamente non può sapere che ho in precedenza creato un cookie chiamato 'roby'
3) rileggo il mio cookie con $c = $_COOKIE['roby'];
Ebbene accade che all'inizio (punto 1) il cookie c'è, alla fine (3) no!
Cosa può accadere? Una volta letto il cookie dall'array $_COOKIE questo viene rimosso? Può essere un discorso di sessioni? Magari lo script (2) altera qualcosa...
Proprio non capisco. $_COOKIE dovrebbe essere di tipo superglobal e visibile ovunque... perchè perde il suo valore?!
PS: la cosa curiosa è che lo stesso script provato in locale funziona benissimo, caricato su AV no...
-
È un superglobale, ma non è protetto e quindi essere modificato liberamente, anche sostituito completamente. Proverei a farmi stampare il contenuto di $_COOKIE con una print_r.
-
E' ciò che ho fatto.
Prima c'è, alla fine non più. Ci sono altri cookies ma non il mio.
Ok, so che può essere riscritto o cancellato, ma lo script incriminato non può sapere il NOME del mio cookie quindi come può eliminarlo? Questo non capisco.
-
Se ricrea da capo tutto l'array il tuo cookie sparisce.
-
Mmhh già.
Domanda.
E' lecito cambiare il valore da script? Tipo:
$_COOKIE['roby'] = 10;
-
-
Forse, ho capito il mio problema anche se non mi spiego il motivo.
All'inizio dello script, leggo il cookie con $_COOKIE, modifico e lo risalvo con la setcookie(). Per utilizzare la modifica in seguito aggiorno anche $_COOKIE assegnandoli il nuovo valore $_COOKIE['...']=123;
Ebbene questa mia riassegnazione non viene vista dall'interno di una funzione! Al contrario se non tocco niente, il cookie originale prelevato dal client viene visto!
Boh?! :shock:
-
Effettivamente non mi aspetterei neanch'io questo comportamento.