Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/05/2011, 04:06
Avatar de sven_uri
sven_uri
 
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Pregunta Problemas con las comprobaciones previas al registro de usuarios

Buenos dias gente,

Mirad, estoy creando mi primer registro de usuarios y hasta el momento me funcionaba bien. Hace poco decidi incorporar más comprobaciones y no las cumple.
Sé que el fallo es que o no escribo la instrucción correcta o que la escribo bien y no donde deberia jejeje.

El codigo es el siguiente:
Código PHP:
Ver original
  1. <?
  2. include('config.php');
  3. ?>
  4. <!--incluimos el config.php que contiene los datos de la conexión a la db-->
  5. <HTML>
  6. <HEAD><TITLE>Registre</TITLE>
  7. </HEAD>
  8. <BODY>
  9. <?php
  10.  
  11. $user = $_POST['nick'];
  12. $user = mysql_real_escape_string($user); //Como la vas a ingresar a mysql es mejor escapar la variable
  13.  
  14. $pass = $_POST['pass'];
  15. $pass = mysql_real_escape_string($pass);
  16.  
  17. $pass1 = $_POST['pass1'];
  18. $pass1 = mysql_real_escape_string($pass1);
  19.  
  20. $email = $_POST['email'];
  21. $email = mysql_real_escape_string($email);
  22.  
  23. $fecha = date("Y/m/d");
  24. $fecha = mysql_real_escape_string($fecha);
  25.  
  26. if (!empty($_POST['level']))
  27. {
  28.    $level = $_POST['level'];
  29.    $level = mysql_real_escape_string($level);
  30. }
  31. else
  32. {
  33. $level = 2; //valor por defecto si $_POST no tiene asignado ningun valor a level
  34. }
  35. $rollo = $_POST['rollo'];
  36. $rollo = mysql_real_escape_string($rollo);
  37.  
  38. if(empty($_POST['nick']) || empty($_POST['pass']) || empty($_POST['pass1']) || empty($_POST['email']))
  39.    {
  40. Header("Location: reg.php"); //enviamos al form de registro que esta en reg.php
  41.    }
  42.    else
  43.    {
  44.  
  45.       //Comprobamos que la pass y pass1 son iguales, sino, volvemos a reg.php
  46.       if($_POST['pass'] != $_POST['pass1'])
  47.       {
  48.       Header("Location: reg.php");  //Como deberia hacerlo para que me saliera al lado del formulario en vez de volver a ir are.g
  49.       echo 'Las passwords no son iguales';
  50.       }
  51.       else
  52.       {
  53.          //comprobamos que el usuario no existe en la db
  54.          $usuarios=mysql_query("SELECT nick FROM users WHERE nick='$user' ");
  55.  
  56.          if($user_ok=mysql_fetch_array($usuarios))
  57.          {
  58.          echo 'El usuario ya esta registrado';
  59.          mysql_free_result($usuarios); //liberamos la memoria del query a la db
  60.          }
  61.          else
  62.          {
  63.            
  64.             $level = "2"; //usaremos level 1 para admins, level 2 para los demas (se cambia manualmente desde phpmyadmin)
  65.  
  66.          
  67.                if (mysql_query("INSERT INTO users (nick,pass,pass1,email,fecha,level,rollo) values ('" .$user . "','" .$pass . "','" .$pass1 . "','" .$email . "','" .$fecha . "','" .$level . "','" .$rollo . "') "))
  68.                {
  69.                echo 'Usuario registrado';
  70.                }
  71.                else
  72.                {
  73.                   echo 'Ocurrió un error, MySQL ha dicho: '.mysql_error();
  74.                }
  75.          }
  76.  
  77.       }
  78.    }
  79.  
  80.  
  81.  
  82. ?>
  83.  
  84.            
  85. </BODY>
  86. </HTML>

Confieso que al utilizar tanto if me he confundido algo pero bueno, estoy aprendiendo jeje. La cosa es que aparte de comprobar que los campos no esten vacios y de que el usuario no se repita, me gustaria añadir lo mismo para el email: que comprobara que no se repita. Si lo sé, deberia hacer algo similar que en el usuario, pero el caso es que me he quedado estancado y no consigo hacerlo funcionar.

Como deberia solucionarlo y que código utilizariais y sobretodo, dónde?

Saludos :)