Aller au contenu

Sujets conseillés

Posté

Bonjour,

en cherchant, sur le web, j'ai lu que pour effacer un cookie, il fallait utiliser setcookie() avec uniquement le nom du cookie comme argument, genre

setcookie('AUTHOK');

.

Le probleme est que si je fais ca, je me retrouve avec ... 2 cookies, comme on peut le voir en affichant les entetes avec PHP.

Array
(
[Host] => arvipa.sgp.st.com:8001
[User-Agent] => Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4
[Accept] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[Accept-Language] => fr,en-us;q=0.7,en;q=0.3
[Accept-Encoding] => gzip,deflate
[Accept-Charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[Keep-Alive] => 300
[Connection] => keep-alive
[Referer] => http://arvipa.sgp.st.com:8001/
[Cookie] => AUTHOK=; AUTHOK=1
[Authorization] => Basic XXXXXXXXXXXXXXXXXXXXXXX
[Cache-Control] => max-age=0
)

Merci pour vos idee.

Laurent

Posté (modifié)
tant que vous pouvez, utilisez maintenant :

$_COOKIES['AUTHOK']= "salut mon ami";

et ensuite

unset($_COOKIES['AUTHOK']);

euh là je me suis lâché, du grand n'importe quoi :clap:

Modifié par pluriels
Posté (modifié)

Pour ma part je mais le temps d'expiration à zéro avec une donnée vide :

  
setcookie('AUTHOK','',0);

Modifié par Thomas.WS
Posté (modifié)

Bon y a des jours où on ferait mieux de rester couché.

Pour info, le tableau $_COOKIE est effectivement en lecture seule et existe depuis la version 4.1

Donc la prochaine fois, je sors :offtopic:

Désolé !

Pour effacer son cookie, forcément setcookie()

setcookie ("Authok", "", time() - 3600);

time()-3600 est expiré, donc le cookie est effacé.

la méthode avec 0 est dans la même idée

Modifié par pluriels
Posté

Hum, vous etes sur pour le 0.

J'ai lu sur le web que 0 indiquait que le cookie n'expirait pas (ce qui semble se verifier dans mon code).

Bon, y'a quant meme qq chose de bizarre :mad2:

Mon code est le suivant :

function Authentification($usr, $func=false, $realm='Mais qui etes vous'){
global $_SERVER, $_COOKIE;

if(!$usr->ok() || // L'utilisateur n'existe pas
!$usr->verifPasswd($_SERVER['PHP_AUTH_PW']) || // Le mot de passe ne correspond pas
($func && !$usr->$func()) // L'utilisateur n'a pas la bonne capacite
){
$usr->invalide(); // Pour etre sur que l'utilisateur ne peut rien faire.
header("WWW-Authenticate: Basic realm=\"$realm\"");
header('HTTP/1.0 401 Unauthorized');
setcookie('AUTHOK', '0', time() - 60, '/');
die('*F* Vous devez vous authentifier pour acceder a cette page.');
}

if(!$_COOKIE['AUTHOK']){
setcookie('AUTHOK', '1', 0, '/');
}
}

que j'utilise ensuite dans 2 pages :

- 1 page d'administration ou il faut absolument se logger

- 1 page ou je desire recuperer l'utilisateur courant uniquement s'il s'est logger (d'ou l'utilisation du cookie car PHP ne cree $_SERVER['PHP_AUTH_USER'] que si la page est authentifiee.

Son code est donc :

if($_COOKIE['AUTHOK']){	// Recree l'authentification si l'utilisateur s'est authentifie.
$u = new membre($site, $_SERVER['PHP_AUTH_USER']);
Authentification($u); // Ceci est normalement inutile ... sauf que l'ententification n'est pas propagee jusqu'ici
}

Alors, ce que je ne comprend pas, c'est que si je me logue sur la page d'Admin, le cookie est bien creer comme me le prouve print_r(apache_response_headers());.

Array

(

[X-Powered-By] => PHP/5.2.3

[set-Cookie] => AUTHOK=1; path=/

)

Mais si je lance a ce moment la ma seconde page, le cookie n'existe pas :unsure:

Il faut que je recharge la page d'admin pour que le cookie apparaisse alors dans la seconde page :wacko:

Qq chose m'echappe ... surtout que j'ai le meme comportement avec Firefox ou IE6 ... donc le probleme vient de mon cote ... mais d'ou ????

Posté (modifié)

essaie une durée autre que 0 pour la création de ton cookie.

7200, ça te laisse 2 heures pou tester !

Modifié par pluriels

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...