Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/03/2015, 04:51
mensajeescrito
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 7 meses
Puntos: 5
Evitar duplicidad de email y password mediante php

HOla amigos/as, a ver si me pueden ayudar con esto que no le saco la solucion.

Tengo un codigo que me inserta en bbdd el email y la contraseña , (y algunos datos mas ).

Pero el problema es que si en el formulario le doy a enviar de nuevo por segunda vez, me vuelve a insertar en la base de datos de nuevo el email y contraseña.


Se que se puede restringir esto mediante sql. pero necesito limitar la duplicidad del email y la contraseña mediante php.

¿Como se puede hacer esto?

De veras que no me sale por mas que lo intento.

Miren este es el codigo que tengo:

Gracias de antemano:


archivo 1, llamado : OperacionesMysql.php

Código PHP:
Ver original
  1. class OperacionesMysql
  2.        
  3.         {
  4.    
  5.             private $servidor = 'localhost';
  6.             private $usuario = 'root';
  7.             private $pass = '';
  8.             private $basedatos = 'bbdd_estadisticas';  
  9.        
  10.             public $nombre_tabla = 'usuarios';
  11.        
  12.        
  13.             public $array_datos = array(
  14.  
  15.                 'nombre'=>'$nombre',
  16.                 'apellidos'=>'$apellidos',
  17.                 'nick'=>'$nick',
  18.                 'email'=>'$email',
  19.                 'password'=>'$password',
  20.                 'repassword'=>'$repassword',               
  21.                 'sexo'=>'$sexo',
  22.                 'dia'=>'$dia',
  23.                 'mes'=>'$mes',
  24.                 'ano'=>'$ano'              
  25.  
  26.             );
  27.  
  28.  
  29.             //CONECTAMOS A LA BASE DE DATOS..................................................................
  30.            
  31.             public function ConectarBbdd()
  32.            
  33.             {
  34.                 $con = mysqli_connect($this->servidor, $this->usuario, $this->pass, $this->basedatos) or
  35.                 die ('Lo siento pero no conecta a la BBDD');
  36.                
  37.                 return $con;       
  38.             }
  39.  
  40.  
  41.             //INSERTAR DATOS...................................................................................
  42.  
  43.             function InsertarDatos($nombre_tabla, $array_datos)
  44.            
  45.                 {          
  46.                     $sql = "INSERT INTO " . $nombre_tabla . " (";
  47.                     $sql .= implode(', ', array_keys($array_datos));
  48.                     $sql .= ") VALUES('". implode("', '", $array_datos)."') ";
  49.                                          
  50.    
  51.                     $con = $this->ConectarBbdd();
  52.                    
  53.                     mysqli_query($con, $sql) or die ('Lo siento pero no se inserta en BBDD' . mysqli_error($con));
  54.                    
  55.                     header("Location:formulario_registrate.php");                                                                                  
  56.                 }      
  57.  
  58.  
  59.  
  60.             //SELECCIONAR TODOS LOS DATOS DE UNA TABLA..........................................................
  61.                    
  62.             public function SeleccionarTodosDatos($nombre_tabla)
  63.            
  64.                 {      
  65.                     $sql = "SELECT * FROM " . $nombre_tabla . " ";
  66.                    
  67.                    
  68.                     $con = $this->ConectarBbdd();
  69.                     $res = mysqli_query($con,$sql) or die ('Lo siento no se muestran los datos.' . mysqli_error($con));
  70.                     return $res;   
  71.                 }
  72.  
  73.  
  74.         } //fin de OperacionesMysql


archivo 2, llamado : validar_formulario_registrarse.php

Código PHP:
Ver original
  1. include '../../clases/OperacionesMysql.php';   
  2.  
  3.     $op = new OperacionesMysql();  
  4.  
  5.  
  6.  
  7. //RECIBIBOS LOS DATOS DEL FORMULARIO.....................................................
  8.  
  9.     $nombre = trim(($_POST['nombre']));
  10.     $apellidos = trim(($_POST['apellidos']));  
  11.     $nick = trim(($_POST['nick']));    
  12.     $email = trim(($_POST['email']));
  13.     $password = trim(($_POST['password']));
  14.     $repassword = trim(($_POST['repassword']));
  15.     $sexo = $_POST['sexo'];    
  16.     $dia = $_POST['dia'];
  17.     $mes = $_POST['mes'];
  18.     $ano = $_POST['ano'];
  19.  
  20.  
  21.  
  22.     $nombre_tabla = $op->nombre_tabla;
  23.  
  24.     $op->SeleccionarTodosDatos($nombre_tabla); 
  25.  
  26.  
  27.     while($fila = mysqli_fetch_assoc($res))
  28.    
  29.         {  
  30.        
  31.             if (($fila['email'] == $email) and ($fila['password'] != $password))
  32.            
  33.                 {
  34.                     header("Location:formulario_registrate.php?tipo_error_registro_usuario=email_existente");
  35.                 }
  36.            
  37.                
  38.                 else
  39.            
  40.                
  41.             if (($fila['email'] != $email) and (($fila['password'] == $password) or ($fila['repassword'] == $repassword)))
  42.            
  43.                 {
  44.                     header("Location:formulario_registrate.php?tipo_error_registro_usuario=password_existente");
  45.                 }
  46.  
  47.                
  48.                 else
  49.                
  50.                
  51.             if (($fila['email'] == $email) and (($fila['password'] == $password) or ($fila['repassword'] == $repassword)))
  52.            
  53.                 {
  54.                     header("Location:formulario_registrate.php?tipo_error_registro_usuario=email_y_password_existente");
  55.                 }  
  56.  
  57.                                    
  58.         } //fin de while
  59.  
  60.  
  61.  
  62. //INSERTAR CAMPOS EN LA TABLA USUARIOS EN LA BBDD.................................................................  
  63.  
  64.             //Lineas para solo poner el nombre de la tabla en el archivo "OperacionesMysql.php"
  65.             $nombre_tabla = $op->nombre_tabla; 
  66.        
  67.            
  68.             $array_datos = array(
  69.            
  70.                 'nombre'=>$nombre,
  71.                 'apellidos'=>$apellidos,
  72.                 'nick'=>$nick,
  73.                 'email'=>$email,
  74.                 'password'=>$password, 
  75.                 'repassword'=>$repassword,             
  76.                 'sexo'=>$sexo,
  77.                 'dia'=>$dia,
  78.                 'mes'=>$mes,
  79.                 'ano'=>$ano
  80.                                
  81.             );         
  82.      
  83.      
  84.             $op->InsertarDatos($nombre_tabla, $array_datos);