destroyedlolo Posté 27 Juin 2007 Posté 27 Juin 2007 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
NorSeb Posté 27 Juin 2007 Posté 27 Juin 2007 Bonjour, Tu peux essayer simplement : $_COOKIES['AUTHOK'] = NULL;
pluriels Posté 27 Juin 2007 Posté 27 Juin 2007 (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 Modifié 27 Juin 2007 par pluriels
destroyedlolo Posté 27 Juin 2007 Auteur Posté 27 Juin 2007 Ok, je vais essaye. C'est valable a partir de quelle version de PHP ?
Thomas.WS Posté 27 Juin 2007 Posté 27 Juin 2007 (modifié) Pour ma part je mais le temps d'expiration à zéro avec une donnée vide : setcookie('AUTHOK','',0); Modifié 27 Juin 2007 par Thomas.WS
pluriels Posté 27 Juin 2007 Posté 27 Juin 2007 (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 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é 27 Juin 2007 par pluriels
destroyedlolo Posté 28 Juin 2007 Auteur Posté 28 Juin 2007 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 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 Il faut que je recharge la page d'admin pour que le cookie apparaisse alors dans la seconde page 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 ????
pluriels Posté 29 Juin 2007 Posté 29 Juin 2007 (modifié) essaie une durée autre que 0 pour la création de ton cookie. 7200, ça te laisse 2 heures pou tester ! Modifié 29 Juin 2007 par pluriels
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant