web-dev-qa-db-fra.com

comment définir ce cookie pour ne jamais expirer

J'ai une fonction pour créer un cookie en passant le nom, la valeur et l'expiration (en jours) du cookie.

Voici la fonction:

function setCookie(c_name,value,exdays) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : ";
    expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}

function getCookie(c_name) {
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++) {
        x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
        y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
        x=x.replace(/^\s+|\s+$/g,"");
        if (x==c_name) {
            return unescape(y);
        }
    }
}

La fonction fonctionne comme prévu, mais que dois-je faire pour que le cookie n'expire jamais?

20
John mido

Il n'y a aucun moyen de définir sur never expire. Ce n'est pas une limitation javascript, ce n'est tout simplement pas la partie de la spécification du cookie http://www.faqs.org/rfcs/rfc2965.html .

Vous pouvez définir une date éloignée dans le futur. par exemple pour le définir pour 20 ans à partir de maintenant, appelez setCookie avec 20*365 as exdays paramètre as you setCookie function attend combien de jours avant son expiration. Comme suit

setCookie('cookiename','cookie_val',20*365);
31

La variable exdays est la durée avant l'expiration du cookie, il suffit de définir cette valeur sur quelques milliers de jours dans votre appel de fonction.

setCookie('cookiename', 'cookievalue', 10000); //expires in 10k days
10
adeneo