2012-05-17 10 views
18

Tengo una función para crear una cookie que transmita el nombre, el valor y la caducidad (en días) de la cookie.cómo configurar esta cookie para que nunca caduque

Aquí es la función:

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 función funciona como se esperaba, pero ¿qué es lo que tengo que hacer para establecer la cookie nunca vencen?

+0

Dupe of http://stackoverflow.com/a/532660/1793718 – Lucky

Respuesta

10

La variable exdays indica cuánto tiempo falta para que caduque la cookie, simplemente establezca ese valor en un par de miles de días en su llamada de función.

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

No hay forma de establecer en never expire. No es una limitación de JavaScript, simplemente no forma parte de la especificación de la cookie http://www.faqs.org/rfcs/rfc2965.html.

Puede establecer una fecha lejana en el futuro. por ejemplo, configurarlo para 20 años a partir de ahora llame al setCookie con 20*365 como parámetro exdays, ya que la función setCookie espera cuántos días antes de que caduque. Como sigue

setCookie('cookiename','cookie_val',20*365); 
Cuestiones relacionadas