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

impedir que un usuario se registro dos veces

Estas en el tema de impedir que un usuario se registro dos veces en el foro de ASP Clásico en Foros del Web. como estan???? tengo funcionando bien dos paginas *.asp: 1. la primera es un formulario que permite que un usuario se registre y lleve sus datos ...
  #1 (permalink)  
Antiguo 05/05/2006, 06:47
 
Fecha de Ingreso: abril-2006
Ubicación: Medellín
Mensajes: 18
Antigüedad: 19 años
Puntos: 0
impedir que un usuario se registro dos veces

como estan????


tengo funcionando bien dos paginas *.asp:

1. la primera es un formulario que permite que un usuario se registre y lleve sus datos a una tabla "usuarios" de una base de datos .

2. la otra es una pagina que permite que el usuario se loguee. si el nombre usuario y la contraseña es igual a la que ingreso en el formulario puede acceder.

las dos paginas funcionan bien con la base de datos que tiene una tabla llamada "usuarios"

LO QUE ME HACE FALTA ES QUE NO SE PERMITA QUE UN USUARIO SE REGISTRE DOS VECES, BASANDO ESTA VALIDACION EN UN CAMPO "nombre_usuario"

gracias
  #2 (permalink)  
Antiguo 05/05/2006, 09:06
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Básicamente antes de hacer el insert de ese usuario necesitarás comprobar que ese usuario no haya sido tomado, puedes abrir un recordset para eso, si el recordset trae resultados, entonces quiere decir que ese usuario ya existe, por lo tanto no lo deberías dejar registrarse, de lo contrario continúas con tu proceso.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 06/05/2006, 09:35
 
Fecha de Ingreso: abril-2006
Ubicación: Medellín
Mensajes: 18
Antigüedad: 19 años
Puntos: 0
gracias, u_goldman

pero la cuestion es............... como hacerlo???????????????????????????????????????????

he tratado con un if dentro de un while , pero la cosa es que no conozco bien estas sentencias
  #4 (permalink)  
Antiguo 07/05/2006, 12:36
Avatar de bonocl  
Fecha de Ingreso: agosto-2003
Ubicación: Paine, Chile.
Mensajes: 9
Antigüedad: 21 años, 8 meses
Puntos: 0
Hola...

La forma más fácil, es como dice goldman. Si el recordset es mayor a 0 entonces no haga el insert.

por ejemplo:

sql = "Select nombre_usuario FROM usuarios "
sql = sql & "Where nombre_usuario = " & request.form("userame")
rs.open sql, conn, 3, 1

if rs.recordcount > 0 then
"Algun texto de usuario creado y redireccionamiento a la página anterior"
end if

Suerte!
  #5 (permalink)  
Antiguo 07/05/2006, 13:07
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 9 meses
Puntos: 24
Cita:
Iniciado por bonocl
Hola...

La forma más fácil, es como dice goldman. Si el recordset es mayor a 0 entonces no haga el insert.

por ejemplo:

sql = "Select nombre_usuario FROM usuarios "
sql = sql & "Where nombre_usuario = " & request.form("userame")
rs.open sql, conn, 3, 1

if rs.recordcount > 0 then
"Algun texto de usuario creado y redireccionamiento a la página anterior"
end if

Suerte!
Esto tiene un pequeño error:

Si yo en el formulario coloco asterisco, entonces burle el sistema.

Nunca se debe enviar directamente un campo a una consulta, debe ser validado previamente.

Saludos
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #6 (permalink)  
Antiguo 07/05/2006, 13:51
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Es totalmente correcto lo que dice Tolaware, se deberia hacer mediante dos métodos:

1. Crear una función para convertir el valor llegaod de la forma, en la cuál deberías validar y quitar el posible SQL Injection.

2. -Lo que siempre recomiendo- Parametrizar las consultas mediante el uso del objeto command de ADO, esto impide en automático el uso de SQL Injection.

Saludos.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 08/05/2006, 07:05
Avatar de bonocl  
Fecha de Ingreso: agosto-2003
Ubicación: Paine, Chile.
Mensajes: 9
Antigüedad: 21 años, 8 meses
Puntos: 0
Totalmente cierto...

yo sólo quería ejemplificar el concepto nada más
  #8 (permalink)  
Antiguo 08/05/2006, 16:53
 
Fecha de Ingreso: abril-2006
Ubicación: Medellín
Mensajes: 18
Antigüedad: 19 años
Puntos: 0
por favor...

alguien tiene un codigo a la mano que haga lo que quiero???, (mensaje principal de la discusion), lo que pasa es que no conozco casi nada de lo que ustedes hablan, (ado, sql injection......), totalmente perdido con esos terminos.

espero no sea mucho pedir,

gracias,
suerte
  #9 (permalink)  
Antiguo 09/05/2006, 03:12
 
Fecha de Ingreso: enero-2002
Mensajes: 1.438
Antigüedad: 23 años, 3 meses
Puntos: 0
sql injection:
pues si a un consulta tipo
"Where nombre_usuario = " & request.form("userame")

le como al form algo como 1 or 1=1

pues se va al garete.
Where nombre_usuario = 1 or 1=1

y las tienes peores
  #10 (permalink)  
Antiguo 09/05/2006, 18:02
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Cita:
Iniciado por juanes31516
LO QUE ME HACE FALTA ES QUE NO SE PERMITA QUE UN USUARIO SE REGISTRE DOS VECES, BASANDO ESTA VALIDACION EN UN CAMPO "nombre_usuario"
Sera que un usuario no registre un nombre de usuario ya registrado, porque el mimso usuario se peude registrar varias veces incluso con el mismo correo

ejemplo
nom_usuario - email
juanra - [email protected]
juanra1 - [email protected]
juanra2 - [email protected]
juanra3 - [email protected]

esa es arina de otro costal

aqui va lo que querias (espero)

antes de el insert en tu base de el nuevo registro
Cita:
function limpia_cadena(str_a_limpiar)
str = lcase(str)
str = replace(str,"=","")
str = replace(str,"'","")
str = replace(str,"""""","")
str = replace(str," or ","")
str = replace(str," and ","")
str = replace(str,"(","")
str = replace(str,")","")
str = replace(str,"<","[")
str = replace(str,">","]")
str = replace(str,"having ","")
str = replace(str,"group by","")
str = replace(str,"union select sum","")
str = replace(str,"union select min","")
str = replace(str,"--","")
str = replace(str,"select ","")
str = replace(str,"insert ","")
str = replace(str,"update ","")
str = replace(str,"delete ","")
str = replace(str,"drop ","")
str = replace(str,"-shutdown","")
end function
'hay una mejor funcion en las FAQ de este foro (de ahi copie esta)
'la funcion la puedes meter en tu archivo de funciones

'luego recoges los campos
nombre_usuario = request("nombre_usuario")
nombre_usuario = limpia_cadena(nombre_usuario)
'...pones tus demas campos para enviarlos limpios de caracteres raros y o SQL Injection


'y basados en lo que han dicho los demas
sql = "Select nombre_usuario FROM usuarios "
sql = sql & "Where nombre_usuario = '" & nombre_usuario & "'"
rs.open sql, conn, 3, 1

if rs.recordcount > 0 then
response.redirect("error_usuario_yaexiste.asp?usua rio= " & nombre_usuario )
end if
creas una pagina llamada error_usuario_yaexiste.asp
Cita:
'recoges el usuario
nombre_usuario = request("usuario")
response.write "El Nombre de usuario " & nombre_usuario & " ya existe en la base de datos, intenga ingresando otro Nombre e Usuario
saludos
__________________
JuanRa Pérez
San Salvador, El Salvador
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 14:46.