JavaScript - Cambiar caducidad cookies a segundos?

 
Vista:

Cambiar caducidad cookies a segundos?

Publicado por Carlos  (15 intervenciones) el 09/02/2011 18:11:17
Este es el javascript con que hago las cookies, quisiera que se borraran cuando presiono la X del explorador,me dijeron que quitando la caducidad se pone como cookies de sesion pero no lo he logrado aún; o ponerla en segundos y no días...gracias de antemano

/////////////////// CONFIGURACION ////////////////////////////////////
var separador = "$" //caracter separador de campos en el texto de la cookie
var numElementos = 1 //numero de campos en el searchfield

/////////////////// DATOS QUE SE MOSTRARAN ///////////////////////////
function Mostrar(texto, searchfield){
var pieza = null
var i = 0

if(CojerCookie(texto) != null) {
texto = CojerCookie(texto)
pieza = texto.split(separador)

for(i = 0; i < pieza.length; i++)
if (pieza[i] != null) {
searchfield.elements[ i ].value = pieza[ i ]
}
}
}


/////////////////////////DATOS QUE SE GUARDARAN /////////////////////////////////////
function JuntarPiezas( searchfield ) {

var entero = ''
//inserta en un string cada elemento, separados por el caracter separado
for ( contador = 0; contador < numElementos - 1; contador++) {
entero += searchfield.elements[ contador ].value + separador
}

//inserta el ultimo elemento
entero += searchfield.elements[ numElementos - 1 ].value

IntroducirCookie(entero)
}

////////////////////////////////// FIN DE VARIABLES A CAMBIAR /////////////////////////////////

function CojerValorCookie(indice) {
//indice indica el comienzo del valor
var galleta = document.cookie
//busca el final del valor, dado por ;, a partir de indice
var finDeCadena = galleta.indexOf(";", indice)
//si no existe el ;, el final del valor lo marca la longitud total de la cookie
if (finDeCadena == -1)
finDeCadena = galleta.length

return unescape(galleta.substring(indice, finDeCadena))
}

function CojerCookie(texto) {
var galleta = document.cookie
//construye la cadena con el texto del valor
var arg = texto + "="
var alen = arg.length //longitud del texto del valor
var glen = galleta.length //longitud de la cookie

var i = 0
while (i < glen) {
var j = i + alen //posiciona j al final del texto del valor
if (galleta.substring(i, j) == arg) //si en la cookie estamo ya en texto del valor
return CojerValorCookie(j) //devuleve el valor, que esta a partir de j

i = galleta.indexOf(" ", i) + 1 //pasa al siguiente
if (i == 0)
break //fin de la cookie
}
return null //no se encuentra el texto del valor
}

function GuardarCookie (texto, valor, caducidad) {
if(!caducidad)
caducidad = Caduca(0)

//crea la cookie: incluye el texto, la caducidad y la ruta donde esta guardada
//cada valor esta separado por ; y un espacio
document.cookie = texto + "=" + escape(valor) + "; expires=" + caducidad + "; path=/"
}

function Caduca(dias) {
var hoy = new Date() //coge la fecha actual
var msEnXDias = eval(dias) * 24 * 60 * 60 * 1000 //pasa los dias a mseg.

hoy.setTime(hoy.getTime() + msEnXDias) //fecha de caducidad: actual + caducidad
return (hoy.toGMTString())
}

function BorrarCookie(texto) {
//para borrar la cookie, se le pone una fecha del pasado mediante Caduca(-1)
document.cookie = texto + "=; expires=" + Caduca(-1) + "; path=/"
}

function IntroducirCookie(texto) {
//establece la cookie: la caducidad es de 1 dias
var _1dias = Caduca(1) //crea la fecha de caducidad si 1 dias
if (texto != "")
GuardarCookie("Datos", texto, _1dias)
}

function MostrarMiCookie() {
Mostrar('Datos', document.searchfield)
}

window.onload = MostrarMiCookie;
if (document.captureEvents) { //N4 requiere invocar la funcion captureEvents
document.captureEvents(Event.LOAD)
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cambiar caducidad cookies a segundos?

Publicado por nkox (13 intervenciones) el 09/02/2011 22:25:07
Hola

Como bien señalas, para que la cookie se elimine al cerrar el navegador NO hay que añadir la palabra expires.

Para que te funcione como tu quieres, tu función GuardarCookie debiera ser algo como:

function GuardarCookie (texto, valor, caducidad) {
//crea la cookie: incluye el texto, la caducidad y la ruta donde esta guardada
//cada valor esta separado por ; y un espacio
document.cookie = texto + "=" + escape(valor) + ( caducidad ? "; expires=" + caducidad : "" ) + "; path=/"
}

Con la función anterior no es necesario que llames a BorrarCookie

En cuanto a tu función Caduca acá están los cálculos:

En segundos:
var msEnXSegundos = segundos x 1000;

En minutos:
var msEnXMinutos = minutos x 1000 x 60;

En Horas:
var msEnXHoras = segundos x 1000 x 60 x 60;

En días:
var msEnXDias = segundos x 1000 x 60 x 60 x 24;

Obs: evita usar la función eval.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar caducidad cookies a segundos?

Publicado por Carlos (15 intervenciones) el 09/02/2011 22:46:27
Mira como lo deje, me siempre me guarda los cookies solo que no me los elimina al cerrar el navegador, no se porque...
////////////////// CONFIGURACION ////////////////////////////////////
var separador = "$" //caracter separador de campos en el texto de la cookie
var numElementos = 1 //numero de campos en el searchfield

/////////////////// DATOS QUE SE MOSTRARAN ///////////////////////////
function Mostrar(texto, searchfield){
var pieza = null
var i = 0

if(CojerCookie(texto) != null) {
texto = CojerCookie(texto)
pieza = texto.split(separador)

for(i = 0; i < pieza.length; i++)
if (pieza[i] != null) {
searchfield.elements[ i ].value = pieza[ i ]
}
}
}


/////////////////////////DATOS QUE SE GUARDARAN /////////////////////////////////////
function JuntarPiezas( searchfield ) {

var entero = ''
//inserta en un string cada elemento, separados por el caracter separado
for ( contador = 0; contador < numElementos - 1; contador++) {
entero += searchfield.elements[ contador ].value + separador
}

//inserta el ultimo elemento
entero += searchfield.elements[ numElementos - 1 ].value

IntroducirCookie(entero)
}

////////////////////////////////// FIN DE VARIABLES A CAMBIAR /////////////////////////////////

function CojerValorCookie(indice) {
//indice indica el comienzo del valor
var galleta = document.cookie
//busca el final del valor, dado por ;, a partir de indice
var finDeCadena = galleta.indexOf(";", indice)
//si no existe el ;, el final del valor lo marca la longitud total de la cookie
if (finDeCadena == -1)
finDeCadena = galleta.length

return unescape(galleta.substring(indice, finDeCadena))
}

function CojerCookie(texto) {
var galleta = document.cookie
//construye la cadena con el texto del valor
var arg = texto + "="
var alen = arg.length //longitud del texto del valor
var glen = galleta.length //longitud de la cookie

var i = 0
while (i < glen) {
var j = i + alen //posiciona j al final del texto del valor
if (galleta.substring(i, j) == arg) //si en la cookie estamo ya en texto del valor
return CojerValorCookie(j) //devuleve el valor, que esta a partir de j

i = galleta.indexOf(" ", i) + 1 //pasa al siguiente
if (i == 0)
break //fin de la cookie
}
return null //no se encuentra el texto del valor
}

function GuardarCookie (nombre, valor, caducidad) {

//crea la cookie: incluye el nombre, la caducidad y la ruta donde esta guardada
//cada valor esta separado por ; y un espacio
document.cookie = nombre + "=" + escape(valor) + "; path=/"
}

function BorrarCookie(nombre) {
//para borrar la cookie, se le pone una fecha del pasado mediante Caduca(-1)
document.cookie = nombre + "=; expires=" + Caduca(-1) + "; path=/"
}

function MostrarMiCookie() {
Mostrar('Datos', document.searchfield)
}

window.onload = MostrarMiCookie;
if (document.captureEvents) { //N4 requiere invocar la funcion captureEvents
document.captureEvents(Event.LOAD)
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar caducidad cookies a segundos?

Publicado por nkox (13 intervenciones) el 10/02/2011 04:07:28
Hola de nuevo...

Hice la prueba con tu codigo y me funcionó sin problemas... generé la cookie, luego mostré los valores guardados, cerré el navegador, volví a abrirlo, revisé las cookies y la cookie Datos no estaba!

Lo más probable es que la cookie está en la caché del navegador, para hacer una prueba desde cero carga la página en cuestión, presiona la tecla SHIFT (y sin soltarla) haz clic en el botón recargar de tu navegador (o la tecla F5). Con esto se debiera borrar la cookie asociada y volverse a crear. Luego cierra el navegador, espera unos segundos y vuelve a abrirlo.

Observaciones en cuanto a tu código JavaScript:
1: Abrir y cerrar llaves aunque la el if o while o for tengan una sóla instrucción.
2: Colocar ; (punto y coma) al final de cada instrucción (obviamente no al final de if, else, for,while,do,etc)
3: Te sugiero usar alguna librería de JavaScript (JQuery,MooTools,YUI,Prototype,etc) con eso te evitas de colocar sentencias como: if(document.captureEvents).
4: Tu función mostrar debiera ser:
function Mostrar(texto, searchfield){
var pieza = null,
_texto = CojerCookie(texto);
if( _texto ){
pieza = _texto.split(separador);
for( var i=0;i < pieza.length; i++ ){
//no creo que sea necesario el if ya que dudo que pieza sea nulo, a lo más vacío si _texto = a$$$$b
searchfield.elements[i].value = pieza[i];
}
}
}

5: Elimina la función BorrarCookie en caso que ya no la ocupes.
6: Dado que la "variable" sepadaror la usas como constante, debieras escribirla en mayúscula.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar caducidad cookies a segundos?

Publicado por nkox (13 intervenciones) el 10/02/2011 04:07:28
Hola de nuevo...

Hice la prueba con tu codigo y me funcionó sin problemas... generé la cookie, luego mostré los valores guardados, cerré el navegador, volví a abrirlo, revisé las cookies y la cookie Datos no estaba!

Lo más probable es que la cookie está en la caché del navegador, para hacer una prueba desde cero carga la página en cuestión, presiona la tecla SHIFT (y sin soltarla) haz clic en el botón recargar de tu navegador (o la tecla F5). Con esto se debiera borrar la cookie asociada y volverse a crear. Luego cierra el navegador, espera unos segundos y vuelve a abrirlo.

Observaciones en cuanto a tu código JavaScript:
1: Abrir y cerrar llaves aunque la el if o while o for tengan una sóla instrucción.
2: Colocar ; (punto y coma) al final de cada instrucción (obviamente no al final de if, else, for,while,do,etc)
3: Te sugiero usar alguna librería de JavaScript (JQuery,MooTools,YUI,Prototype,etc) con eso te evitas de colocar sentencias como: if(document.captureEvents).
4: Tu función mostrar debiera ser:
function Mostrar(texto, searchfield){
var pieza = null,
_texto = CojerCookie(texto);
if( _texto ){
pieza = _texto.split(separador);
for( var i=0;i < pieza.length; i++ ){
//no creo que sea necesario el if ya que dudo que pieza sea nulo, a lo más vacío si _texto = a$$$$b
searchfield.elements[i].value = pieza[i];
}
}
}

5: Elimina la función BorrarCookie en caso que ya no la ocupes.
6: Dado que la "variable" sepadaror la usas como constante, debieras escribirla en mayúscula.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar caducidad cookies a segundos?

Publicado por Carlos (15 intervenciones) el 10/02/2011 17:41:08
No se que sucede...afecta que esten dentro de un frame? es que no los puedo sacar de los frames, son de las pocas situaciones en que es estrictamente necesarios...voy a seguir probando...gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar