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

¿Problemas con las cookies?

Estas en el tema de ¿Problemas con las cookies? en el foro de ASP Clásico en Foros del Web. Buenas: Es mi 1ª página web y tengo un problema intermitente con el login en algunos navegadores (de momento lo he probado solo en IE6.0) ...
  #1 (permalink)  
Antiguo 19/05/2004, 12:22
 
Fecha de Ingreso: mayo-2004
Ubicación: Sevilla, Spain
Mensajes: 20
Antigüedad: 20 años, 11 meses
Puntos: 0
Pregunta ¿Problemas con las cookies?

Buenas:

Es mi 1ª página web y tengo un problema intermitente con el login en algunos navegadores (de momento lo he probado solo en IE6.0) y a veces se puede efectuar la entrada y a veces no.

La 1ª vez que se intenta validar un usuario siempre sale el problema (error en usuario o contraseña). Si pulso el botón "Atrás" de IE y vuelvo a intentarlo sigue dando el problema una y otra vez, no importa cuántas lo intente. Cuando pulso en el enlace a la página que contiene el formulario de entrada, entonces SÍ se realiza la validación (habiendo fallado por lo menos una vez).
En el equipo de desarrollo nunca he tenido problemas con la validación, directamente en el servidor de la página web tampoco, pero en otro equipo de la red y otros de fuera en internet suelen tener este problema.

El sistema que uso es el siguiente:

- Base de datos SQL donde se almacenan los usuarios y contraseñas.

- Formulario html "Acceso.htm" donde introduce el usuario en los textbox los datos de Usuario y Contraseña. El form llama a:

- "Chequeo.asp": página que llama a la clase "Acceso.clsUsuario" contenida en el componente COM "Acceso.dll". Si el objeto "EsUsuario" vale "true" se graba la cookie y se redirecciona a la página "miembros1.asp", si es "false" se redirecciona a la página "miem_error.htm".

- Componente COM "Acceso.dll" realizado en VB6.0 que abre la BD, comprueba y compara los datos introducidos por el usuario con los contenidos en la BD, y crea un resultado en la función pública "EsUsuario" = true / false.


Problema:la primera vez (y solo esa) que intentan hacer el login siempre responde usuario no válido o contraseña incorrecta aunque esté bien escrita (cuando grabo lo cookie le pongo también Response.Cookies("Clave").expires="30/5/2005" al principio de todo).

También he probado utilizando "Session" en vez de cookies con el mismo resultado.

Creo que tiene que ver con la cookie, que se lee en cada página restringida (y en función de su valor permite seguir o redireccionar a la página de error), y no sé si es que no le da tiempo a grabarla (ponerla a true) antes de que la lea dicha página restringida.

Si consigo validarme, los intentos siguientes ya funcionarán bien, es decir, los usuarios incorrectos serán rechazados y los correctos accederán, pero solo hasta que borre las cookies. Entonces ni los correctos pueden acceder la primera vez que intentan validarse.

Agradezco cualquier idea que me puedan dar.
Saludos
  #2 (permalink)  
Antiguo 19/05/2004, 15:33
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 23 años, 3 meses
Puntos: 3
bien.. no he entido bien.. pero yo trabajo asi para validar los usuarios y guardar la info en las cookies:

<%
'trim es para quitar los espacios en blanco entra la palabra
xusuario = Trim(request.form("usuario"))
xpassword = Trim(request.form("password"))

set oCN = Server.CreateObject("ADODB.Connection")
oCN.open 'el string para abrir tu base de datos

strSQL = "select * from usuarios where nombre_usuario = '"&xusuario&"' and clave_usuario = '"&xpassword&"'"

'esto hace q el string "SQL" se execute y busque los datos que se piden.. y el recordset es "oRS"
set oRS = oCN.execute(strSQL)

'si no existe el usuario
if oRS.eof then
response.redirect("miem_error.htm")
else
'creo las cookies
Response.Cookies("clave") = "si"
Response.Cookies("clave").expires = 30/5/2005
response.redirect("miembros1.asp")
end if

'bueno.. de esta forma no va a haber problemas... las cookies se van a crear.. a menos q en tu compu están deshabilitadas las cookies
%>

Suerte!
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #3 (permalink)  
Antiguo 19/05/2004, 16:46
 
Fecha de Ingreso: mayo-2004
Ubicación: Sevilla, Spain
Mensajes: 20
Antigüedad: 20 años, 11 meses
Puntos: 0
Cita:
Mensaje Original por mamon
bien.. no he entido bien.. pero yo trabajo asi para validar los usuarios y guardar la info en las cookies:

<%
'trim es para quitar los espacios en blanco entra la palabra
xusuario = Trim(request.form("usuario"))
xpassword = Trim(request.form("password"))

set oCN = Server.CreateObject("ADODB.Connection")
oCN.open 'el string para abrir tu base de datos

strSQL = "select * from usuarios where nombre_usuario = '"&xusuario&"' and clave_usuario = '"&xpassword&"'"

'esto hace q el string "SQL" se execute y busque los datos que se piden.. y el recordset es "oRS"
set oRS = oCN.execute(strSQL)

'si no existe el usuario
if oRS.eof then
response.redirect("miem_error.htm")
else
'creo las cookies
Response.Cookies("clave") = "si"
Response.Cookies("clave").expires = 30/5/2005
response.redirect("miembros1.asp")
end if

'bueno.. de esta forma no va a haber problemas... las cookies se van a crear.. a menos q en tu compu están deshabilitadas las cookies
%>

Suerte!
--------------------------------------------------------------
Hola:

La validación de usuario se realiza correctamente, y la cookie se crea en la máquina cliente, yo creo que el problema es que en cada página restringida tengo el siguiente código para evitar que puedan teclear directamente la URL sin pasar por el formulario de autenticación:
<%
if request.cookies("Clave")<>"true" then
response.redirect "miem_error.htm"
end if
%>

El problema me lo da cuando se está cargando la página restringida por 1ª vez, que lo único que tiene que hacer es leer la cookie y si vale "true" dejar ver la página y si no redireccionar a la página de error. Pues esta 1ª vez siempre redirecciona a la página de error. Una vez allí, he mirado en el disco duro, en Windows\Cookies y la cookie está creada con valor True y fecha y hora de ese instante. Lo que no entiendo es por qué no se lee desde la página.
Quizás sucede todo demasiado rápido y el archivo de cookie no se ha cerrado completamente, antes de que la página pueda acceder a su contenido, cuando se realiza el request.cookie... no lo sé.

En el 2º intento como la cookie ya estaba creada y cerrada, la autenticación se realiza perfectamente.

El proceso es el siguiente:
1º) Se validan los datos del usuario
2º) Se crea la cookie en el ordenador cliente
3º) Cada página privada cuando se carga pregunta por el valor de esa cookie
4º) Se muestra la página o se redirecciona en caso de que la cookie sea false (o falte).

¿Se puede comprobar si existe la cookie antes de decidir nada, o realizar un retardo para esperar a que se cierre el proceso de creación de la cookie, o quizás forzar la lectura de esa cookie? ¿Qué puedo hacer? ¿Dejar pasar a todos los que no tengan cookie?
Gracias

Última edición por enrib4; 19/05/2004 a las 16:53
  #4 (permalink)  
Antiguo 19/05/2004, 19:29
 
Fecha de Ingreso: mayo-2004
Ubicación: Sevilla, Spain
Mensajes: 20
Antigüedad: 20 años, 11 meses
Puntos: 0
SOLUCIONADO

Cita:
Mensaje Original por enrib4


--------------------------------------------------------------
Hola:

La validación de usuario se realiza correctamente, y la cookie se crea en la máquina cliente, yo creo que el problema es que en cada página restringida tengo el siguiente código para evitar que puedan teclear directamente la URL sin pasar por el formulario de autenticación:
<%
if request.cookies("Clave")<>"true" then
response.redirect "miem_error.htm"
end if
%>

El problema me lo da cuando se está cargando la página restringida por 1ª vez, que lo único que tiene que hacer es leer la cookie y si vale "true" dejar ver la página y si no redireccionar a la página de error. Pues esta 1ª vez siempre redirecciona a la página de error. Una vez allí, he mirado en el disco duro, en Windows\Cookies y la cookie está creada con valor True y fecha y hora de ese instante. Lo que no entiendo es por qué no se lee desde la página.
Quizás sucede todo demasiado rápido y el archivo de cookie no se ha cerrado completamente, antes de que la página pueda acceder a su contenido, cuando se realiza el request.cookie... no lo sé.

En el 2º intento como la cookie ya estaba creada y cerrada, la autenticación se realiza perfectamente.

El proceso es el siguiente:
1º) Se validan los datos del usuario
2º) Se crea la cookie en el ordenador cliente
3º) Cada página privada cuando se carga pregunta por el valor de esa cookie
4º) Se muestra la página o se redirecciona en caso de que la cookie sea false (o falte).

¿Se puede comprobar si existe la cookie antes de decidir nada, o realizar un retardo para esperar a que se cierre el proceso de creación de la cookie, o quizás forzar la lectura de esa cookie? ¿Qué puedo hacer? ¿Dejar pasar a todos los que no tengan cookie?
Gracias
Probando, probando, resulta que si pongo la URL completa (antes usaba solo la ruta relativa) en el Formulario de acceso (acceso.htm) cuando envía los datos a la página "chequeo.asp" (ahora http://www...../chequeo.asp) ya no hay problemas con la cookie.

No le encuentro mucha explicación, pero así son las cosas. Misterios de la informática.

Gracias a todos de todas formas.
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 07:21.