Bonjour à tous,

Je ne sais pas si le problème viens de WAMP ou non, mais je n'arrive absolument pas à créer un seul cookie, ou à en supprimer un sur WAMP en local.
Voilà mes bouts de code de création de cookie

/**
* Permet de créer un ou plusieurs cookies récursivement
* @param $name : Nom du cookie (ou tableau/objet de cookie, indéxé par les variables de cette fonction)
* @param $value : Valeur du cookie
* @param $expire : Durée de vie du cookie en jours
* @param $path : Chemin ou le cookie est actif
* @param $domain : Domain ou le cookie est actif
* @return True/False : True si tout les cookies ont été créés, sinon False
**/
function setCookies($name, $value = '', $expire = 0, $path = '/', $domain = BASE_URL) {
    $complet = true;
    // Si c'est un tableau ou un objet de cookie on applique récusivement pour tout les sous ensembles
    if(is_array($name) || is_object($name)) {
        // Modele d'un tableau de cookie par défaut
        $default = array(
            'name' => 'defaultCookieName',
            'value' => $value,
            'expire' => $expire,
            'path' => $path,
            'domain' => $domain
        );
        // On parcours chaque cookie de l'ensemble
        foreach($name as $cookie) {
            // On complète les possibles données manquantes
            $cookie = array_merge($default, $cookie);
            // On créer le cookie
            $complet &= setCookies($cookie'name'], $cookie'value'], $cookie'expire'], $cookie'path'], $cookie'domain']);
        }

    }
    // Sinon c'est un cookie seul
    else {
        // Si $expire vaut 0, l'expiration doit être immédiate
        if($expire == 0) {
            $expire = 1;
        }
        // On convertis la durée de vie en jours du cookie, en seconde à partir du timestamp
        else {
            $expire = time() + 3600 * 24 * $expire;
        }
        // On créer le cookie
        $complet &= setcookie($name, $value, $expire, $path, $domain);
    }
    return $complet;
}

Et maintenant le code d'appel de ma fonction

$name = 'testNom';
$value = 'testValeur';
$expire = 7;
setCookies($name, $value, $expire);

setCookies me retourne bien "True", mais dans mes cookies, je ne vois jamais mon cookie =S
Est-ce un problème lié à WAMP ?

Merci d'avance.

5 réponses


Typhon
Auteur
Réponse acceptée

Et bien voilà, merci ^^

Visiblement, pour ce genre de problème, il vaut mieux définir la variables $path = '/' et $domain = '' pour éviter tout problème de création de cookie =D

Hello :)

Voici un peu de lecture :)

Bonne lecture :)

Typhon
Auteur

J'ai bien vérifier, tout est bon, j'ai même fais le test avec un simple setcookie() et non plus avec ma fonction plus complexe.

setcookie('test', 'test', time()+3600);
Me créer bien un cookie,
et
setcookie('test', '', 1);
Me le détruit bien.

Cependant, ma fonction continue de ne toujours pas marcher =S

Edit:

Incompréhensible, j'ai fais un test, au sein de ma fonction setCookies() j'ai mis 2 lignes

setcookie($name, $value, $expire);
setcookie('test2', 'test2', time()+3600);

La première ligne ne me créer pas de cookie, la deuxième si, pour info un echo des 3 variables ($name, $value et $expire) me donnent :

test
test
1340730757

ReEdit:
Finalement la première ligne me créer aussi bien un cookie maintenant, je ne sais pas pourquoi, mais sa marche, un autre problème

setcookie($name, $value, $expire, $path, $domain);
Ne marche réellement pas ^^ mais je pense que sa viens de la variable $domain, je vais voir ;)

ouki, je connais pas super bien les cookies, mais si tu t'en sors tant mieux

Ah bah c'est bon à savoir ça :)

Merci pour ton partage en tout cas :)