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

Como hago codigo de activacion?

Estas en el tema de Como hago codigo de activacion? en el foro de ASP Clásico en Foros del Web. Amigos, tengo un problema; estoy diseñando un sitema con ASP el cual usa base de datos de Acces y tengo este problema, quiero hacer que ...
  #1 (permalink)  
Antiguo 15/10/2003, 09:55
 
Fecha de Ingreso: abril-2002
Mensajes: 127
Antigüedad: 22 años, 2 meses
Puntos: 0
Como hago codigo de activacion?

Amigos, tengo un problema; estoy diseñando un sitema con ASP el cual usa base de datos de Acces y tengo este problema, quiero hacer que cuando un usuario se registre al completar un formulario esos datos se ingresen a una base de datos, esa parte la tengo cubierta porque los datos hago que se ingreses perfectamente, lo que no se como hacer y no me sale es que antes de que se ingresen los datos (de registro que vienen del formulario) del usuario, se le envíe un email con un link a donde le muestre o que ingrese su usuario y le mande por email un código de activación de cuanta y que con este codigo active la cuenta en otro paso que ese creo que ya se como lo voy a hacer el problema esta en que no se como hacer lo que explico arriva.
Sería una cosa así como cuando uno se olvida la contraseña aquí en el foro, y te envian un email con un link para que al hacer cick en este te envien otro email con una nueva contraseña, bueno sería lo mismo.
A ver si alguien me puede dar una mano con esto o bien donde puedo encontrar algo sobre como hacer esto, o si alguien tiene algún script prearmado se lo voy a agradecer muchisimo.
Nuevamente muchas gracias al iluminado que sepa o se le ocurra como hacerlo, yo lo
  #2 (permalink)  
Antiguo 15/10/2003, 09:59
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
Yo lo que hago es que cuando se registran genero un numero aleatorio entre 0 y 9999, se lo envio y lo guardo en ese registro.
Luego se va a la pantalla donde el usuario tiene que poner ese numero para completar el registro. Si lo pone bien se activa, y si no, a las 0.00 se borran todas las que no hayan sido activadas.

Es decir, son dos pasos, no uno, como tu pretendes.
Paso 1. Pone su nick, email y password. Se graba en la bd junto con el codigo de confirmacion.
Paso 2. Pone su codigo de confirmacion y se completa el registro
  #3 (permalink)  
Antiguo 15/10/2003, 10:43
 
Fecha de Ingreso: abril-2002
Mensajes: 127
Antigüedad: 22 años, 2 meses
Puntos: 0
Eso es exactamente lo que yo quiero hacer, esa es la idea, que el que ingresa los datos se activa, puedes postearme el script que usas y como, si mandas el formulario de registro a otro archivo que procesa los datos y ahí se genera el numero aleatorio, o como sería la estructura o pasos.
Te voy a agradecer muchísmo si me posteas el script.
Eres un genio viejo.

Desde ya muchas gracias.
  #4 (permalink)  
Antiguo 16/10/2003, 16:45
 
Fecha de Ingreso: abril-2002
Mensajes: 127
Antigüedad: 22 años, 2 meses
Puntos: 0
AlexNV, podrías posterame el script que usas o como haces para que a las 0:00 si no se ingreso el codgio correcto se borren todas las suscripciones registradas.

Saludos el Jedi.
  #5 (permalink)  
Antiguo 21/10/2003, 05:26
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
Perdonad el retraso.
El Jedi, el procedimiento es bien sencillo.

El usuario rellena el formulario, poniendo su nick, password (dos veces), email y otros datos que te sirvan.
Si el nick ni el email existen, se crea un registro con esos datos en la tabla usuarios, con el campo CONFIRMADO = FALSE.

Se envía un email a la dirección especifficada por el usuario con una clave, generada aleatoriamente, y se redirije a una pantalla donde te pide la clave. En el email tambien se envia un link a esa pagina, por si tarda en llegar.

En esa pagina, el usuario pone la clave de confirmacion, si coincide con la generada se pone confirmado=TRUE y el alta se completa. Si no, se queda ahí hasta las 0:00, hora en la que el SQL Server tiene una tarea programada del estilo
DELETE FROM USUARIOS WHERE CONFIRMADO=0

Eso es todo. Espero que te sirva.
  #6 (permalink)  
Antiguo 21/10/2003, 11:53
 
Fecha de Ingreso: abril-2002
Mensajes: 127
Antigüedad: 22 años, 2 meses
Puntos: 0
Como sería el codigo?

Amigo, no me sale, estube probando pero no me sale, podrías posterme el script que tu usas, así veo como quedaría armado y lo adapto con mis datos. Aquí te paso lo que yo estube probando si puedes agregarle lo que tu dices de que caduque despues de las 0:00 o modificarme el codigo que te paso a continuación te lo voy a agradecer. Si no, si puedes y no es molestia, envíame el script que tu usas y yo lo adapto a lo que necesito.
<%
Randomize
Variable = int((9999 - 0 + 1) * rnd + 0)

then

set mailer = server.createobject("SoftArtisans.SMTPMail")

Mailer.FromName = "Nombre"
Mailer.FromAddress = "de la direccion que viene"
Mailer.RemoteHost = "ruta del server"
Mailer.AddRecipient "Titulo", Request.Form("email")
Mailer.Subject = "Subjet"

Mailer.BodyText = "Utilise este numero de activación para activar su cuenta en nuestros sistema. Este número caducara a las 0:00, luego de este horario tendrá que completar
nuevamente el formulario de registro " variable <% Response.write(Variable) %>

if Mailer.SendMail then
' Message sent Ok, redirect to a confirmation page
Response.Redirect ("pagina de activacion")
else
' Message send failure
Response.Write ("An error has occurred.<BR>")
' Send error message
Response.Write ("The error was " & Mailer.Response)
end if

then

Dim ObjDB
Dim ObjRS
Dim Sql
strConnection = "driver={Microsoft Access Driver (*.mdb)}; server=ruta de la base de datos"
Set ObjDB = Server.CreateObject("ADODB.Connection")
ObjDB.Open strConnection
Sql = "Insert Into Nombre Tabla (STATUS) values ("'"& Variable &"'")
Set ObjRS = ObjDB.Execute(Sql)
//response.Write(Sql)
%>

Gracias por adelantado.
  #7 (permalink)  
Antiguo 22/10/2003, 01:37
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
Si es que es de lo mas sencillo...

Nick = trim(Request("Nick"))
Pw1 = trim(Request("Password"))
Pw2 = trim(Request("Password2"))
Email = trim(Request("email"))

randomize
clave = int(rnd() * 10000)

'compruebo que el nick y el email no estan en la base de datos. Si ya estan los rechazo. Compruebo que las dos pw son iguales. Compruebo que tanto la pw, como el email, como el nick tienen la longitud correcta y no contienen caracteres que no quiero.

'Si todo va bien...

Dim cmd
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open ("Provider=SQLOLEDB.1;Password=xx;Persist Security Info=True;User ID=xx;Initial Catalog=xxx;Data Source=xxx")
Set cmd = Server.CreateObject("ADODB.COMMAND")
cmd.ActiveConnection = oConn
cmd.CommandText = "INSERT INTO USUARIOS VALUES ('" & nick & "', '" & pw1 & "', '" & email & "', " & clave & ", 0, 0, 0, 0, GETDATE(), '" & comunidad & "')"
'Uno de los 0 del insert es el campo CONFIRMADO
cmd.Execute
oconn.close
set cmd = nothing
set oconn=nothing

' Compongo el email y lo envio con la clave a la direccion que me han dado.

FIN====================


En el formulario de confirmacion tendras que comprobar que el usuario pone la misma clave que la que tienes en la bd.
Si ya han pasado las 0.00 se habra borrado, por lo que le dices que ha caducado el alta y que lo repita. Si la confirma bien, pones el campo CONFIRMADO=1 y ya esta.

Para que se borren a las 0.00, como te decia en el post anterior, creas una tarea programada en el sqlserver que se active a las 0.00 y haga un DELETE FROM USUARIOS WHERE CONFIRMADO=0


Un saludo.
  #8 (permalink)  
Antiguo 03/11/2003, 17:20
 
Fecha de Ingreso: abril-2002
Mensajes: 127
Antigüedad: 22 años, 2 meses
Puntos: 0
Hola amigo, nuevamente yo!!!!

Amigo, necesito tu ayuda nuevamente, he hecho y seguido paso a paso lo que me has dicho y he podido hacer andar casi todo con muchas pruebas y esfurezo, pero me faltan algunas cosillas que no se como hacerlas y que te quería preguntar:

Cómo hago para chequear que el usuario, la contraseña y el email no estan repetidos en la base? no se como hacerlo.
Sería mucha molestia que me postees el codigo como sería para hacer esto?.
Osea que se fije en la base y que si son repetidos los datos, lo regrese al visitante nuevamente al formulario para que complete los campos que estan repetidos y le diga por que lo regreso.

Desde ya muchas gracias anticipadas por tu ayuda.

El Jedi.
  #9 (permalink)  
Antiguo 04/11/2003, 01:04
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años, 1 mes
Puntos: 1
[... Cómo hago para chequear que el usuario, la contraseña y el email no estan repetidos en la base? ...]


- Realiza un SELECT del tipo:

"SELECT * from Usuarios WHERE nick='" & nick "' and pw1='" & pw1 & "' and email='" & email & "'"

- Detecta si existe algún registro, en caso contrario, el usuario no existe

If Rs.EOF Then
El usuario no existe en la BBDD
Else
El usuario existe en la BBDD
End If


======================================

Por otro lado, yo no se que finalidad tiene lo de [... Para que se borren a las 0.00 ...], pero has pensado que pasaría si un usuaraio se registra a las 23:45 ??? No creo que le haga mucha gracia que si entra despues de las 0:00 le hagas volver a registrar

Yo lo que haría es darle 24h a partir de la hora de registro para que pueda confirmar la solicitud, o 3 días, o una semana, o 30 días, nose, lo encuentro excesivo lo de [... a las 0.00 ...], pero bueno, para gustos no hay nada escrito, y si esto es lo que quieres, pues nada, aquí dejo mi opinión por si otro lo lee ;)
  #10 (permalink)  
Antiguo 04/11/2003, 02:45
Avatar de AlexNV  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años
Puntos: 1
Lo de las 0.00 o las 24 horas o los 3 dias depende de las necesidades. En mi caso tenía que ser así por motivos de restricción del servidor. Además, el 90% de mis usuarios se registran por la mañana.
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 12:03.