Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/03/2015, 06:28
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Evitar duplicidad de email y password mediante php

Cita:
Se que se puede restringir esto mediante sql. pero necesito limitar la duplicidad del email y la contraseña mediante php.
En primer lugar y ante todo, debes proteger la base de datos, de modo que ni ante un error de la aplicación se generen duplicidades. En ese sentido crea un índice UNIQUE pero únicamente sobre el e-Mail, no sobre la password. Si el indice lo hicieras con la password también permitiría de todos modos crear dos entradas con el mismo e-Mail pero con diferentes password, lo que es un error.
Por otro lado, poner como unica la PWD tampoco tiene mucho sentido, porque la misma pasword sólo aplicaría en combinación con el mismo e-Mail, lo que reduce al mínimo los problemas. Además no hay razones validas para restringir la pwd de ese modo. Sí el e-Mail.

Por otro lado, debes recordar que PHP no tiene forma de saber si algo está o no registrado en la base, a menos que lo valides. Para eso solo existen dos formas: 1) Consultas a la base si el e-Mail ya existe antes de crear la inserción (esto de todos modos es lógicamente necesario), y 2) REgistrar de algún modo que el formulario ya se envió, y que envío y registración fueron exitosos.

En este último punto yo te sugeriría que usaras la sesión en PHP para almacenar dos cosas:

1) Un atributo booleano que cuando envías el formulario se ponga en TRUE.
2) Un atributo booleano que cuando la registración sea exitosa se ponga en TRUE.

Obviamente ambos atributos se deben crear como FALSE al inicio, y además ser verificados antes de enviar el formulario, aunque sea por primera vez.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)