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

problemas con un redirect o con el script o no se con que pero no funciona

Estas en el tema de problemas con un redirect o con el script o no se con que pero no funciona en el foro de ASP Clásico en Foros del Web. Hola amigos... les cuento, tengo este código: Código: <% 'Declaración de variables Dim conn Dim rs Dim sql Dim usuario Dim contrasena Dim recordar 'Rescatamos ...
  #1 (permalink)  
Antiguo 23/05/2005, 15:55
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
problemas con un redirect o con el script o no se con que pero no funciona

Hola amigos... les cuento, tengo este código:
Código:
<%
'Declaración de variables
Dim conn
Dim rs
Dim sql
Dim usuario
Dim contrasena
Dim recordar
'Rescatamos las variables del formulario
usuario = Request.Form("usuario")
contrasena = Request.Form("usuario")
recordar = Request.Form("recordar")
'Condición para crear la cookie
If recordar = "si" And usuario = rs("usuario") And contrasena = rs("contrasena") Then
Response.Cookie("Admin")("usuario") = usuario
Response.Cookie("Admin")("contrasena") = conrtasena
end If
'Establecemos la conección a la base de datos
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../catalogo.mdb"))
'Creación de la sentencia SQL correspondiente (cambiar el valor de tabla por el nombre de la tabla que queremos seleccionar)
sql="Select * From Admin"
'Ejecución de la orden
Set rs = Conn.Execute(sql)
'Condición para mostrar el formulario o redireccionar al menú
If usuario = "" and contrasena = "" Then
%>
<form method="POST" action="default.asp">
<table border="1" bordercolor="<% = ColorBorde %>" width="50%" cellspacing="0" align="center">
<tr>
<td width="100%" bgcolor="<% = ColorFondoTitulo %>" colspan="2" align="center" class="text">Formulario de Ingreso al sistema</td>
</tr>
<tr>
<td width="56%" bgcolor="<% = ColorFondo %>" class="text">Nombre de Usuario:</td>
<td width="50%" bgcolor="<% = ColorFondo %>"><input type="text" name="usuario" size="20" style="<% = InputEstilo %>"></td>
</tr>
<tr>
<td width="56%" bgcolor="<% = ColorFondo %>" class="text">Contraseña:</td>
<td width="50%" bgcolor="<% = ColorFondo %>"><input type="password" name="contrasena" size="20" style="<% = InputEstilo %>"></td>
</tr>
<tr>
<td width="56%" bgcolor="<% = ColorFondo %>" class="text">Recordar la próxima vez:</td>
<td width="50%" bgcolor="<% = ColorFondo %>"><input type="radio" value="si" name="recordar" checked>Si <input type="radio" value="no" name="recordar">No</td>
</tr>
<tr>
<td width="100%" bgcolor="<% = ColorFondo %>" colspan="2" align="center"><input type="submit" value="Ingresar" name="ingresar" style="<% = BotonEstilo %>"></td>
</tr>
</table>
</form>
<% else If usuario <> rs("usuario") Or contrasena <> rs("contrasena") Then %>
<form method="POST" action="default.asp">
<table border="1" bordercolor="<% = ColorBorde %>" width="50%" cellspacing="0" align="center">
<tr>
<td width="100%" bgcolor="<% = ColorFondoTitulo %>" colspan="2" align="center" class="text">Formulario de Ingreso al sistema</td>
</tr>
<tr>
<td width="100%" bgcolor="<% = ColorFondo %>" colspan="2" align="center" class="text">El Nombre de Usuario o la Contraseña estan incorrectos</td>
</tr>
<tr>
<td width="56%" bgcolor="<% = ColorFondo %>" class="text">Nombre de Usuario:</td>
<td width="50%" bgcolor="<% = ColorFondo %>"><input type="text" name="usuario" size="20" style="<% = InputEstilo %>"></td>
</tr>
<tr>
<td width="56%" bgcolor="<% = ColorFondo %>" class="text">Contraseña:</td>
<td width="50%" bgcolor="<% = ColorFondo %>"><input type="password" name="contrasena" size="20" style="<% = InputEstilo %>"></td>
</tr>
<tr>
<td width="56%" bgcolor="<% = ColorFondo %>" class="text">Recordar la próxima vez:</td>
<td width="50%" bgcolor="<% = ColorFondo %>"><input type="radio" value="si" name="recordar" checked>Si <input type="radio" value="no" name="recordar">No</td>
</tr>
<tr>
<td width="100%" bgcolor="<% = ColorFondo %>" colspan="2" align="center"><input type="submit" value="Ingresar" name="ingresar" style="<% = BotonEstilo %>"></td>
</tr>
</table>
</form>
<% else 
Response.Redirect(menu.asp)
end If
end If
%>
Bueno la cosa es que me tira este error:
Error de Microsoft VBScript en tiempo de ejecuciónerror '800a000d'

No coinciden los tipos

/pruebas/catalogo/admin/default.asp, line 24

entonces lo que hice fue cambiar el usuario = rs("usuario") y el contrasena = rs("contrasena") por usuario = "rs('usuario')" y contrasena = "rs('contrasena')", la cosa esque error desaparecio pero no me redirecciona la página aunque los datos esten correctos (me muestra lo que deveria mostrar o mejor dicho muestra cuando la contraseña o el nombre de usuario no coninciden)... entonces no se si es por esto (que esta mal en sintaxis) o no se que... bueno espero que me puedan hechar una manito... gracias de antemano y saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #2 (permalink)  
Antiguo 23/05/2005, 16:06
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Es un problema de logica, divide y venceras (aunque es una mala costumbre anidar codiciones si true -> si true), pues es dificl llevar un control, apenas sabes que se cumplio una condicion y ya le pones otra, cuando logicamente, corresponde condicion -> accion -> condicion:
Código:
<%
'Si los dos vienen vacios entonces
If usuario = "" and contrasena = "" Then
%>
   haces algo aqui
<% 
'si los dos tienen un valor
else
   'Si alguno de los dos no coincide
   If usuario <> rs("usuario") Or contrasena <> rs("contrasena") Then 
   %>
      haces algo aca
  <% else 
    los dos tienen valor y coinciden
  <%end if%>
end If
%>
Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 23/05/2005, 16:13
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola

Imagino que tienes antes de eso la consulta a la base de datos y que has comprobado que rs regreso datos correctos de la consulta, etc., bueno, si ya tienes eso te recomiendo hacer esto:

if usuario <> Cstr(rs("usuario")) Or contrasena <> Cstr(rs("contrasena")) Then

Cuando estas usando un rs, el rs realmente no sabe de que tipo de datos esta manejando, es decir, esta como variable pura, no es hasta que tu la vacias a una variable cuando toma un tipo definido en ASP, y por el error de tipo que te marca podría ser este el caso, entonces, si tu sabes que se te regreso una cadena pues:

Cstr(rs("campoCadena"))
Cint(rs("campoInteger"))
Clgn(rs("campoLong"))
Cdbl(rs("campoFloatDouble"))

En fin, segun corresponda o como quieras manejarlo, de esa forma tus comparaciones no tendrán problemas. Inténtalo, talvez sea ese el error.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #4 (permalink)  
Antiguo 23/05/2005, 16:25
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 8 meses
Puntos: 4
solo una duda¿?

es así
Response.Redirect(menu.asp)

o es así

Response.Redirect "menu.asp"

o es que las 2 sirven?
__________________
by Capitán Buscapina
.
  #5 (permalink)  
Antiguo 23/05/2005, 16:33
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola

Seia asi...

Response.Redirect "pagina.asp"

Cuando tienes que concatenar una cadena es recomendable hacerlo asi:

Response.Redirect ("pagina.asp?" & parametros)

Igual funciona.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #6 (permalink)  
Antiguo 23/05/2005, 16:48
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 8 meses
Puntos: 4
ok.

entonses la forma que utilizó el metalik es correcta???
Es que veo que le faltan las comillas

gracias


PD: todos los días se aprende algo nuevo
__________________
by Capitán Buscapina
.
  #7 (permalink)  
Antiguo 23/05/2005, 17:07
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Efectivamente, le faltan unas comillas:
Sería así:

Response.Redirect "pagina.asp"
o
Response.Redirect("pagina.asp")

Los paréntesis son opcionales (tanto si tenés que concatenar cadenas o no.. puede que sea más recomendable usarlos por cuestiones de legibilidad.. otra no le veo)
__________________
...___...
  #8 (permalink)  
Antiguo 23/05/2005, 17:17
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Es cosa de contatenar cadenas, cuando pones parentesis le dices que primero cocatene toda la cadena y luego la mande toda junta, algo de cadenas lo pueden ver en esta liga:

http://msdn.microsoft.com/library/de...aspstrcatn.asp

JEJEJE, muchos diran que como exagero con esa liga, pero cuando yo llegue a estos foros fue por un problema de Session que no tenia explicacion y que realmente nadie me pudo ayudar, pero encontre que estaba haciendo mal uso de algunas cosas muy sencillas, y ya que usaba mucho la concatenacion de cadenas estaba usando mal la estructura de memoria, por eso pongo esa liga, porque me ayudo a mejorar mis sistemas en un 40%.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #9 (permalink)  
Antiguo 23/05/2005, 17:38
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
[QUOTE]...muchos diran que como exagero con esa liga...[QUOTE]

Nonono.. en lo poco que leí, me pareció muy buena (no la había leido antes)
Entoces, a usar paréntesis se ha dicho!

Igual, el desempeño de nuestro script no variará "demaciado" si hacemos ésto:

Response.Redirect "pagina.asp?" & parametros

En lugar de ésto:

Response.Redirect ("pagina.asp?" & parametros)

Claro... se trata de una simple línea.. pero multiplicada por "N", la historia cambia un poco.

Gracias y un saludo (mañana con más tiempo la leo en profundidad -o cuando tenga más tiempo que el que tendré mañana :()
__________________
...___...
  #10 (permalink)  
Antiguo 23/05/2005, 18:35
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Gracias...

Que bueno que te gusto, y si tienes razon, empiezas por algo pequeño pero la costumbre te mata, y siempre es mejor que desde lo pequeño te acostumbres a hacerlo de la mejor manera posible...

Creeme esa liga me alivio fuertes problemas de cabeza, por eso me gusta ponerla...

Suerte a todos!!
__________________
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 22:50.