PDA

View Full Version : [PHP] cancellare cookie e $_COOKIE[]


Re_Kotc
28-04-2010, 12:42
raga non riesco a venire a capo di un problema, ho un sito dove è possibile loggarsi e scegliere di ricordare utente e password in modo da non poterle reinserire, se l'utente vuole la login i dati viene impostato un cookie con tutte le informazioni di accesso, il cookie funziona nel senso che se riapro il browser viene ripristinato tutto ..però se clicco su ESCI il logout non funziona come dovrebbe!..nel senso che non si cancella il cookie e al ripristino della pagina sono ancora loggato, il codice del logout è il seguente:


<?php

setcookie("motorizzazione[login-name]","",$time-3600*24);
setcookie("motorizzazione[login-pass]","",$time-3600*24);
setcookie("motorizzazione[welcome]","",$time-3600*24);

session_start();
session_unset();
session_destroy();.

header("Location: ../index.php?logged=off");

?>

non riesco a capire...al termine della cancellazione vado su index.php ma se provo a visualizzare ad esempio la variabile $_COOKIE['motorizzazione']['login-name'] questa viene visualizzata!...quindi non è stata cancellata...non riesco a capire come liberarmene..suggerimenti? non sono molto pratico di tutte queste variabili php lato server :)

CaMbA
28-04-2010, 18:45
Ciao, prova a mettere session_start() prima delle chiamate a setcookie().

Re_Kotc
28-04-2010, 18:57
grazie del consiglio, ho cambiato ma purtroppo il cookie resta, alla riapertura della pagina mi torna ad avere il login settato..il mio problema è la variabile PHP $_COOKIE['motorizzazione']['login-name'] che sembra mantenga il suo stato anche se il cookie non c'è ( o non dovrebbe esserci)

Re_Kotc
28-04-2010, 19:19
quello che mi sembra di non capire è..come mai le variabili $_COOKIE non vengono svuotate...io ho bisogno che quando ricarica la pagina index.php queste variabili siano vuote!.ufff:muro:

DanieleC88
28-04-2010, 19:20
Secondo me è dovuto al fatto che imposti il cookie e contemporaneamente mandi un header personalizzato con una nuova location da caricare.

Qualche riferimento in più:
http://www.webmasterworld.com/forum88/8252.htm

DanieleC88
28-04-2010, 19:22
In più, se hai IIS, è possibile che tu sia incappato in un bug:
http://support.microsoft.com/kb/q176113/

Re_Kotc
28-04-2010, 19:40
No uso Apache :)

Secondo me è dovuto al fatto che imposti il cookie e contemporaneamente mandi un header personalizzato con una nuova location da caricare

quello che è strano è che se nel file logout.php faccio un echo di $_COOKIE['motorizzazione']['login-name'] subito dopo l'eliminazione dei cookie in effetti lo stampa vuoto!...ma se metto una stampa della stessa variabile in index.php lui mi stampa il valore di login-name ...!!!....ma la variabile non è la stessa??...c'è qualcosa che mi sfugge maledizione..
in pratica al logout $_COOKIE['motorizzazione']['login-name'] è correttamente vuoto ma subito dopo il redirect ha di nuovo il valore di login-name non vuoto...

Re_Kotc
28-04-2010, 19:49
ho provato a stampare $_COOKIE['motorizzazione']['login-name'] in altre pagine..sempre la stessa storia..è ancora li con il suo valore!:.e non dovrebbe..

CaMbA
28-04-2010, 21:07
Scusa, ma in $time cosa ci vai a salvare? Perchè io ho sempre usato direttamente la funzione time().