Foros del Web » Programando para Internet » ASP Clásico »

las cookies desaparecen

Estas en el tema de las cookies desaparecen en el foro de ASP Clásico en Foros del Web. Hola. tengo un problema con las cookies. a pesar de que indico response.cookies("cookie").Expires=Date+365 al cabo de unas horas desaparece. alguna idea? Gracias....
  #1 (permalink)  
Antiguo 14/07/2005, 10:09
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
las cookies desaparecen

Hola.

tengo un problema con las cookies.

a pesar de que indico
response.cookies("cookie").Expires=Date+365

al cabo de unas horas desaparece.

alguna idea?
Gracias.
  #2 (permalink)  
Antiguo 14/07/2005, 13:16
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
no se .... ¿alguna opción en el IIS?
  #3 (permalink)  
Antiguo 14/07/2005, 13:49
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Primero mira lo que te arroja Date + 365, luego conviertelo a un valor del tipo correcto que puede recibir response.cookies("cookie").Expires

Por hay necesitas algo como:

Response.Cookies("cookie").Expires = DateAdd("yyyy", 1, Now())

Y a ver que pasa.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #4 (permalink)  
Antiguo 14/07/2005, 22:48
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
Lo primero, gracias por las respuestas a los dos.
Myakire:me pasa lo mismo en local que en el servidor. Lo he intentado revisando en local las opciones sobre sesión que hay y, al parecer, no es de eso.

Neuron: Ahí le has dado, machote!!!! creía que si expires no aceptaba ese valor, saltaría un error. pero no hacía nada, simplemente seguía con la ejecución. Y eso era lo que me tenía extrañado (aunque ahora, con el problema resuelto pienso que de dónde coño me saqué que date+365 podía resultar válido .No es que me considere un maestro ni muchísimo menos, pero tampoco soy un principiante. no encuentro un icono que signifique verguenza, pero así es como me siento))

En cualquier caso, y después de arregrarlo con la idea de Mr. Neuron, yo no las tenía todas conmigo y busqué algo de teoría sobre cookies en internet. Y, en aspin.com, encontré esta función que lista los valores de todas las cookies activas del sitio. Seguramente, a alguien le vendrá bien

Código:
<%
'**************************************
    ' Name: Cookie Debugger
    ' Description:Creates a list of all cook
    '     ies and there crumbs along with the valu
    '     es assigned to each one.
    ' By: Lewis E. Moten III
    '
    ' Returns:Returns an orderd list of name
    '     s and values of cookies and crumbs.
    '
    'This code is copyrighted and has    ' limited warranties.Please see http://w
    '     ww.Planet-Source-Code.com/vb/scripts/Sho
    '     wCode.asp?txtCodeId=6724&lngWId=4    'for details.    '**************************************
    
    Response.Write CookieData()
    function CookieData()
    	Dim llngMaxCookieIndex
    	Dim llngCookieIndex
    	Dim llngMaxCrumbIndex
    	Dim llngCrumbIndex
    	Dim lstrDebug
    	' Count Cookies
    	llngMaxCookieIndex = Request.Cookies.Count
    	
    	' Let user know if cookies Do Not exist
    	if llngMaxCookieIndex = 0 Then
    		CookieData = "cookie data is empty."
    		Exit function
    	End if
    	
    	' Begin building a list of all cookies
    	lstrDebug = "<OL>"
    	
    	' Loop through Each cookie
    	For llngCookieIndex = 1 To llngMaxCookieIndex
    		lstrDebug = lstrDebug & "<LI>" & Server.HTMLEncode(Request.Cookies.Key(llngCookieIndex))
    		
    		' Count the crumbs
    		llngMaxCrumbIndex = Request.Cookies(llngCookieIndex).Count
    		
    		' if the cookie doesn't have crumbs ...
    		if llngMaxCrumbIndex = 0 Then
    			lstrDebug = lstrDebug & " = "
    			lstrDebug = lstrDebug & Server.HTMLEncode(Request.Cookies.Item(llngCookieIndex))
    		' Else Loop through Each crumb
    		Else
    			lstrDebug = lstrDebug & "<OL>"
    			For llngCrumbIndex = 1 To llngMaxCrumbIndex
    				lstrDebug = lstrDebug & "<LI>"
    				lstrDebug = lstrDebug & Server.HTMLEncode(Request.Cookies(llngCookieIndex).Key(llngCrumbIndex))
    				lstrDebug = lstrDebug & " = "
    				lstrDebug = lstrDebug & Server.HTMLEncode(Request.Cookies(llngCookieIndex)(llngCrumbIndex))
    				lstrDebug = lstrDebug & "</LI>"
    			Next
    			lstrDebug = lstrDebug & "</OL>"
    		End if
    		lstrDebug = lstrDebug & "</LI>"
    	Next
    	lstrDebug = lstrDebug & "</OL>"
    	' Return the data
    	CookieData = lstrDebug
    	
    End function%>
gracias otra vez, monstruos!!!

Editando, que es gerundio: Hay que investigar porqué date+365 no es válido pero, sin embargo, no saca error. Aún sigo mosqueado por ésto.
  #5 (permalink)  
Antiguo 15/07/2005, 08:23
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Hay tantas cosas que uno hace de forma trivial que ya uno (al menos yo) no nos molestamos por averiguar el fondo del asunto.

Para las cookies yo hago Response.Cookies("galleta").Expires=#May 10,2005#, por ejemplo. Y ya estoy acostumbrado a ello y nunca tengo problemas. No intenté nunca sumar fechas de la misma forma que en SQL-Server (GetDate()+365). Pero con tu post trasgukabi me puse a investigar el por qué.

Resulta que .Expires recibe un objeto de tipo DATE(), pero al enviarle una cadena ella hace un cast implícito. Pero como la cookie debe estar en formato GMT (de la misma forma que las cookies de cliente) dicho cast no asegura que se convierta de forma adecuada. En JavaScript es más obio esto. Probe en JSP mándando diferentes formatos a .Expires y ahí si me daba error si mandaba formatos incorrectos, no como en ASP (vbs), por que ahí existen muy pocas conversiones implícitas, supongo que con alguna directiva se le puede indicar al vbs que no acepte este tipo de castings.
Pero bueno, según leí esta mañana lo correcto es el formato que yo siempre he usado o el uso de funciones de fecha (obj Date()) que no den lugar a malas interpretaciones. También suguieren algunos sitios que para asignar las cookies se inserte código JSSS como este:

Código:
<script languague="javascript" runat=server>
var Tomorrow=new Date()
Tomorrow.setDate(Tomorrow.getDate() + 1)
myExpire = (Tomorrow.getMonth() + 1) + "/" + Tomorrow.getDate() 
myExpire += "/" + Tomorrow.getFullYear()

Response.Cookies("firstCookie") = "I like cookies."
Response.Cookies("firstCookie").Expires=myExpire

Response.Cookies("secondCookie") = "ASP Cookies Are Easy."
Response.Cookies("secondCookie").Expires=myExpire
</script>
Pero eso ya se me hace como que exagerado, jejeje

Bueno, a esto he llegado despues de leer 4 o 5 sitios que hablen del formato de fecha con las cookies, nada formal y tomenlo, al igual que yo, con reservas.

Saludos
  #6 (permalink)  
Antiguo 15/07/2005, 09:24
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Jejejeje, ahi tienes la respuesta completa de porque no funcionaba, y bueno, en mi experiencia Date + X no funciona correctamente, tampoco algo como vafFecha + varDias, tampoco funciona correctamente, por eso te decia de verificar lo que estaba pasando con Date + 365, y luego pensar en pasarle un dato valido a esa función, jejeje pero Myakire como buen colaborador se te adelando y nos aclaro mucho mejor el tema

Un gusto ayudarte trasgukabi, pues eres uno de los mounstrous de este foro....

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:01.