A VUELTAS CON ASP
Vamos a ver, tengo una página en la que te registras dando tu email y contraseña, y quiero poner lo típico de "olvidó su contraseña?".
El método que he pensado es escribir tu email en una página y que se vaya a otra que coja esta dirección, se conecte a la base de datos y busque en la tabla email. Si encuentra la dirección, enviaría automáticamente un email con la contraseña.
Hasta aquí mu bien pero no me funciona el código, he probado de todo ya. Sobretodo la primera parte es lo que falla, lo de enviar el e-mail no lo pondré para no liar más.
La primera página sólo tiene un formulario con un campo para el email y envia a esta página:
<%
Dim email, oConn, RS
email = Trim(Request.Form("email")) 'Aquí recoge el email de un formulario anterior
'Conectamos a nuestra BD.
Set oConn = Server.CreateObject ("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("base.mdb")
sql = "SELECT * FROM Tabla WHERE email = '"& rs.Fields("email") &"'"
Set RS = Server.CreateObject ("ADODB.RecordSet")
RS.Open sql, oConn
If (RS.EOF = true) then
response.redirect "error.html"
Else If RS.Fields("email") = email then
EnviarEmail
Sub EnviarEmail ()
Aquí iría el código para enviar el e-mail
End Sub EnviarEmail ()
rs.close
oConn.Close
Set RS = Nothing
Set oConn = Nothing
End If
%>
playground
Yo no se mucho de asp pero no he entendido esto:
'"& rs.Fields("email") &"'"
Por qué no pones directamente:
sql = "SELECT * FROM Tabla WHERE email = '" & email & "'"
no?
leisdesign
Eso es lo que tenía antes y no me funcionaba, lo he probado de muchas maneras diferentes. Gracias igualmente.
playground
Esto tampoco lo he entendido:
Set RS = Server.CreateObject ("ADODB.RecordSet")
RS.Open sql, oConn
Yo tengo un ejemplo parecido que funciona y es:
sql = "delete * from noticias where titular ='" & temporal & "'"
oConn.Execute(sql)
oConn.Close
meddle
que errores te da? Has probado de poner response.write's a ver donde falla? Igual es que no pilla bien el email.
leisdesign
Para ver si el problema era de la parte del email he probado poniendo que, cuando encuentre el e-mail que responda escribiendo hola, y ni así. No me da ningún error de asp sino un, no se puede mostrar página.
meddle
entonces todo apunta a que no encuentra el email, no?
meddle
prueba esto:<code><%
Dim email, oConn, RS
email = Trim(Request.Form("email")) 'Aquí recoge el email de un formulario anterior
response.write("email-"&email&"-") 'saca por pantalla -email-
'Conectamos a nuestra BD.
Set oConn = Server.CreateObject ("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("base.mdb")
sql = "SELECT * FROM Tabla WHERE email = '"& email &"'"
Set RS = OConn.Execute(sql)
if RS.eof then
response.write("Email no existe en la base de datos")
else
Do While Not RS.EOF
'enviar email o lo que sea
RS.MoveNext
Loop
RS.close
oConn.Close
Set RS = Nothing
Set oConn = Nothing
end If
%></code>
black
si dices que no te da ningún error es porque está haciendo:
If (RS.EOF = true) then
response.redirect "error.html"
y error.html no existe... puede ser?
esta línea:
sql = "SELECT * FROM Tabla WHERE email = '"& rs.Fields("email") &"'"
cambiala por esta:
sql = "SELECT * FROM Tabla WHERE email = '"& email &"'"
Por que utilizas sub? y yo esto:
rs.close
oConn.Close
Set RS = Nothing
Set oConn = Nothing
lo pondría después del end if, porque si es EOF dejas abierta la consulta...
(consejos de prinsipiante ;) )
leisdesign
meddle: Muchas gracias, modificándola un poquillo ya la he ajustado para que funcione.
black: Lo del error.html no era.
La verdad es que uno de los grandes problemas (aparte del código) es que NO existía el registro "email", porque lo habían cambiado por usuario (Que vergüenza reconocerlo, así era un poco dificil encontrar ningún e-mail).
El sub no me ha hecho falta y el end IF también lo he cambiado de sitio.
Por cierto, aquí el principiante soy YO. Estoy más perdido aún con el ASP!!. Muchas gracias.