PDA

Visualizza la versione completa : Problema cancellazione cookie


slyfer89
30-03-2012, 14:02
Salve,ecco il mio problema,sul mio sito ho inserito una parte personale accessibile tramite login,al login effettuato creo un cookie e fin qui tutto bene

if (($user=='user') and ($psw=='password')){
setcookie("ilcookie","admin",time()+3600,"/sito","sito.altervista.org");
Header( "Location: admin.php" );
}else{Header( "Location: privata.php?pop=1212" ); };

ma quando devo sloggare non mi funziona...il codice che utilizzo è il seguente

setcookie("ilcookie");
Header( "Location: index.php" );

con FF e Chrome mi rimanda alla index ma se premo il bottone indietro del browser mi fa rientrare nella pagina admin.php come se il cookie esistesse ancora,mentre con IE non mi fa assolutamente nulla,non mi rimanda nemmeno alla index

ho provato a cancellare tt i cookie e ad entrare direttamente nell'area admin.php e con tutti e 3 i Browser vengo rispedito alla index(almeno questo va :) )

Help me please

Simo990
30-03-2012, 14:22
Ciao, prova così:



$cookie = session_get_cookie_params();
session_destroy();
setcookie("ilcookie",
false,
$cookie['lifetime'],
$cookie['path'],
$cookie['domain'],
$cookie['secure']);


Nota bene che setcookie() fallisce se c'è dell'output prima della sua chiamata.

:ciauz:

Plopper
30-03-2012, 14:37
Fai cosi al logout:


setcookie("ilcookie","admin",time()-3600,"/sito","sito.altervista.org");

Inoltre ti consiglierei di impostare il cookie come http only cosi è piu sicuro


setcookie("ilcookie","admin",time()+3600,"/sito","sito.altervista.org",0,1);

slyfer89
05-04-2012, 09:18
Ragazzi niente da fare...dato che non riesco a distruggerlo ho pensato di gestire il log utente cambiando valore al cookie

cosi lo creo e ridirigo il visitatore alla pagina

setcookie("miosito","user",time()+3600,"/dir","dominio.it",0,1);
Header( "Location: user.php" );

dentro user.php controllo l'esistenza e il valore del cookie

if($_COOKIE['miosito']== "user"){
include'page.html';}else{Header( "Location: privata.php?pop=1212" );};

ma vengo sempre reindirizzato a privata.php

quindi mi e venuto il dubbio e ho stampato a video il valore del cookie che ho notato rimane sempre "UNDEFINED"

Virus_101
05-04-2012, 10:40
Allora per i cookies :

1- in fase di test abilitare sempre tutti gli errori inserenedo error_reporting(E_ALL) ;
2- fare molta attenzionne ai percorsi e al dominio inpostato.
il percorso /sito fara funzionare il cookie solo in quel sottopercorse e se distruggi un cookie siile da percorso diverso ( quindi se lo script non e' dentro /sito o in una sua sottocartella) il cookie per il percorso /sito non verrà modificato.
3- usare firefox e firecookie per testare il comportamento dei cookies pagina per pagina.
4- distruggere i cookies settando un nuovo cookie con contenuto vuoto e expire a time()-3601

.....................

Gud lac :D

slyfer89
07-04-2012, 13:47
ok provero la tua soluzione,cmq per ora avevo risolto la cosa con le sessioni ma explorer non le accetta mentre firefox e chrome si..... mistero della vita

Virus_101
08-04-2012, 15:43
Le sessioni necessitano dei cookies, se i cookies sono disabilitati non partono nemmeno le sessioni. O meglio viene allocata una nuova sessione ogni volta che lanci il session start perche' non viene rilevato il cookie di sessione, e quindi(in base al tuo codice) verrà o meno gestita la cosa.

k.b
08-04-2012, 16:54
Originariamente inviato da Virus_101
Le sessioni necessitano dei cookies, se i cookies sono disabilitati non partono nemmeno le sessioni. O meglio viene allocata una nuova sessione ogni volta che lanci il session start perche' non viene rilevato il cookie di sessione, e quindi(in base al tuo codice) verrà o meno gestita la cosa.
Non e' esatto. Il cookie e' il sistema primario per la propagazione del session id, se i cookie non sono disponibili il session id viene trasmesso come parametro nell'URL.

Virus_101
08-04-2012, 17:33
-.- certo chge funziona cosi ma propagare il sesison id serve il cookie e senza quello non fai nulla e ognui volta che fai un session_start lato server avvii una nuova sessione nel server che non verrà piu' usata e verrà deallocata a timeout.

In soldoni quindi se hai i cookies le sessioni funzionano correttamente altimenti no. Il perche' solitamente lo si indaga poi. :D


Sei sicuro che venga spedito come query string ?
A me pare che succede solo se lo imposti te ... di base se ho cookies ok altrimenti ciccia non vanno...

k.b
08-04-2012, 17:36
Originariamente inviato da Virus_101
-.- certo chge funziona cosi ma propagare il sesison id serve il cookie e senza quello non fai nulla e ognui volta che fai un session_start lato server avvii una nuova sessione nel server che non verrà piu' usata e verrà deallocata a timeout.

In soldoni quindi se hai i cookies le sessioni funzionano correttamente altimenti no. Il perche' solitamente lo si indaga poi. :D
Ma non e' vero, le sessioni funzionano anche senza cookie.

Loading