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.
| ||||
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 ![]() ![]() ![]() 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:
gracias otra vez, monstruos!!!<% '************************************** ' 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%> 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. |
| ||||
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:
Pero eso ya se me hace como que exagerado, jejeje<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> 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 |
| ||||
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!! |