Newsgroup: it.comp.www.php
Titolo: Cookie che scadono in PHP

Ciao a tutti,
ho uno strano problema con i cookie... non riesco a capirne la causa
né come potrebbe essere risolto:
Ho un'area riservata con password che gestisco con i cookie; se una
persona effettua l'accesso, viene settato il cookie e può navigare tra
le varie pagine dell'area riservata.
Questo script l'ho realizzato diversi mesi fa, e in tutto questo tempo
non ho mai avuto il minimo problema. L'ho inoltre usato e testato con
diversi siti, su diversi server, e tutto funziona alla perfezione.
Ma da un paio di giorni, stranamente non mi funziona più nulla,
all'improvviso!
Ecco cosa succede:
1) se faccio il login, il cookie si setta, ma non mi fa entrare
ugualmente nell'area riservata (come se il cookie non fosse stato mai
creato o sarebbe scaduto all'improvviso)
2) se cancello i cookie dal browser, non appena faccio l'accesso, ecco
che tutto funziona, ma dopo un tempo non definito, scade tutto e non
riesco ad entrare.
3) se più avanti rifaccio l'accesso, ecco che NON funziona di nuovo:
bisogna cancellare ancora i cookie (in pratica funziona una volta si e
una no).
faccio notare anche le seguenti cose:
- non ho toccato nulla nel codice, tutto è avvenuto all'improvviso
- non è un problema solo del mio browser, ho testato la cosa da
diversi computer.
- se provo lo script su un altro server, è tutto ok
- il cookie non ha timer(), teoricamente dovrebbe cancellarsi non
appena viene chiuso il browser
quello che mi domando è questo: i cookie sono memorizzati su hard
disk... perchè allora, visto lo strano comportamento, tutto mi fa
pensare ad un problema di configurazione del server? C'è qualche
opzione di apache/php che se settata male può far capitare questo
problema?
grazie!

 problema?
Perchè non posti la parte di codice incriminata?
Ciao,
   Fabrizio
=== 
http://www.negusweb.it
 ===

 Perchè non posti la parte di codice incriminata?
ecco qui, in maniera semplificata:
il form di ingresso rimanda ad una pagina check.php, che controlla
l'esattezza della password e, in caso tutto sia corretto, crea il
cookie e rimanda alla prima pagina dell'area riservata (pagina.php):
if ($user_ins == "miousername" and $pwd_ins == "miapassword" and
$user_ins != "" and $pwd_ins != "") {
$valorecookie = "ok,mionome";
// set cookie;
setcookie("miocookie", $valorecookie);
header ("Location: pagina.php");
}
(in pratica memorizza solo il valore "ok" e "mionome" nel cookie. Le
altre pagine verificheranno che il primo valore sia stato memorizzato e
faranno vedere il contenuto delle loro pagine - ripeto, questa è una
versione semplificata, ma il concetto è quello).
sucessivamente, appena fatto l'accesso, si va alla pagina "pagina.php",
dove, se il cookie è stato settato correttamente, si vedrà il
contenuto della pagina, altrimenti un messaggio di errore. A volte
entra correttamente, ma dopo un po' di tempo il cookie non funziona e
si scollega (e compare il messaggio di errore). Anche rifacendo i
login, non si potrà entrare nuovamente. Bisogna cancellare i cookie
dal proprio browser e allora si potrà rientrare. Ma, dopo un po' di
tempo, ecco che il problema si ripresenta (a volte subito, a volte
impiega diversi minuti - è una cosa del tutto casuale!).
il controllo per vedere se il cookie è stato settato (pagina.php), è
questo:
if (isset ($HTTP_COOKIE_VARS) ) {
while (list ($nomecookie, $valorecookie) = each ( $HTTP_COOKIE_VARS ) )
{
$daticookie = explode(",", $valorecookie);
$controllo = $daticookie[0];
$nome = $daticookie[1];
}
}
e poi...
if ($controllo == "ok") {
// --- mostra il contenuto ---
echo "ciao" . $nome;
} else {
// --- errore ---
echo "errore, cookie non settato";
}
ripeto che uso questo script da mesi, e su diversi siti ed è stato
testato abbondantemente, su diversi PC e browser. La scorsa settimana
tutto andava bene, ora all'improvviso non funziona nulla... non riesco
a capire neanche il perchè, visto che i cookie sono memorizzati in
locale...
sembrerebbe che dopo un po' di tempo i cookie si danneggino o scadono,
ma per poterli ricreare, bisogna cancellare quelli vecchi, memorizzti
nel browser.
Daniele

 }
settando il cookie senza data scadenza questo è legato al concetto di 
"sessione" che (parlando di PHP) è un parametro temporale definito nel file 
di configurazione php.ini, forse è cambiato quello?
ad es:
; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0
Mario
_________________________
WEB: 
www.mario-online.com
________________________________ 

 ________________________________
-- 


no, non è quello...
sono riuscito a capire la causa pochi minuti fa:
in pratica il problema è causato dal fatto che ho installato google
analytics, che crea un altro cookie che va in conflitto con il mio!
Infatti il problema si presentava in maniera random, ovvero quando
accedevo alle pagine con lo script di google analytics! Da
impazzireeeee!
ora devo capire come fare a prendere il cookie esatto creato da me, in
modo da non avere conflitti. Ma almeno so già dove devo cercare!
grazie mille per il supporto! ;)


beh questo è facile basta che gli dai un nome diverso da quello/quelli di 
Google
setcookie("miocookie", $valorecookie);
e poi
$miocookie = $_COOKIE['miocookie'];
ciao


 $miocookie = $_COOKIE['miocookie'];
nel mio caso ho messo un semplice
if ($nomecookie == "miocookie") {
in mezzo al while (visto che non posso usare $_COOKIE, ma
$HTTP_COOKIE_VARS)
un saluto! :)
Daniele