Fonction cookie_destroy();

MEGAFILES
Invité n'ayant pas de compte PHPfrance

15 mars 2012, 08:33

Bonjour à tous, je viens de faire la fonction cookie destroy qui est plutôt bien !
public static function DestroyCookies()
	{
		$cookies = array("cookname", "cookname");
		
		foreach ($cookies as $key)
		{
			if (isset($_COOKIE[$key]))
			{
				unset($_COOKIE[$key]); 
				return setcookie($key, NULL, -1); 
			}
		}
	}
dans mon class.core.php

et dans mon global.php
function cookie_destroy()
		{
			global $core;
			
			return $core->DestroyCookies();
		}
N'hésitez pas à proposer une amélioration à ce code :p

ViPHP
xTG
ViPHP | 7331 Messages

15 mars 2012, 10:09

Si ton but est de supprimer tous les cookies de ton domaine le mieux est de parcourir le tableau $_COOKIES plutôt qu'un tableau avec valeur fixes.
Ainsi le jour où tu rajoutes un cookie tu n'auras pas à revenir dans cette fonction pour effectuer des modifications.

MEGAFILES
Invité n'ayant pas de compte PHPfrance

15 mars 2012, 13:19

Je ne vois pas comment m'y prendre !

Donc j'utilise if (isset($_COOKIE)) ?

ViPHP
ViPHP | 2577 Messages

15 mars 2012, 15:30

Regardes du coté de l'instruction foreach

MEGAFILES
Invité n'ayant pas de compte PHPfrance

15 mars 2012, 22:07

JE dois changer au niveau de
$cookies = array("cookname", "cookname");
?

Perso, j'ai changé par $_COOKIE et ça met une erreur, comment dois-je my-prendr E?

ViPHP
xTG
ViPHP | 7331 Messages

15 mars 2012, 22:16

$cookies = $_COOKIE;
?

MEGAFILES
Invité n'ayant pas de compte PHPfrance

15 mars 2012, 22:18

Oui, j'ai essayé avec ça et ça ne fonctionne pas!

public static function DestroyCookies()
	{
		$cookies = $_COOKIE;
		
		foreach ($cookies as $key)
		{
			if (isset($_COOKIE[$key]))
			{
				unset($_COOKIE[$key]); 
				setcookie($key, NULL, -1); 
			}
		}
	}

MEGAFILES
Invité n'ayant pas de compte PHPfrance

15 mars 2012, 22:43

Voici le correctif exact !
public static function DestroyCookies()
	{
		if (isset($_COOKIE))
		{
			foreach ($_COOKIE as $key => $value) // Ne pas enlever => $value
			{
				unset($_COOKIE[$key]); 
				setcookie ($key, NULL, time() - 3600);
			}
		}
	}

ViPHP
xTG
ViPHP | 7331 Messages

16 mars 2012, 08:41

Tu peux te passer du isset(), l'array $_COOKIE existe toujours et ce même s'il n'y a pas de cookie.