Registro PHP

Iniciado por Moand, 21 Mayo 2016, 17:48 PM

0 Miembros y 1 Visitante están viendo este tema.

Moand

Buenas a todos!

No se mucho de programación en general y todo lo que he aprendido ha sido por mi cuenta. Me he propuesto hacer un sistema de registro y estoy teniendo algunos problemas los cuales no se solucionar.

Esto esta sacado de varias partes de Internet, lo que he hecho es ir uniendo y adaptarlo para lo que yo lo quiero.

Código (php) [Seleccionar]
<?php

  $user 
$_POST['user'];
  
$mail $_POST['mail'];
  
$pass $_POST['pass'];
  
$repass $_POST['repass'];

  
$connect mysqli_connect("localhost""root""""share");

  if (isset(
$_POST["send"])) {
    if (
$user "" or $mail "" or $pass "" or $repass "") {
      echo 
"Rellene los campos.";
      }else {
        
$rec_user mysqli_query($connect"SELECT * FROM users");
        
$valid_user 0;

        while (
$result mysqli_fetch_object($rec_user)) {
          if (
$result -> user $user) {
            
$valid_user 1;
            echo 
"Ya existe este usuario.";
          }
        }

        if (
$valid_user 0) {
          
$rec_mail mysqli_query($connect"SELECT * FROM users");
          
$valid_mail 0;

          while (
$result mysqli_fetch_object($rec_mail)) {
            if (
$result -> mail $mail) {
              
$valid_mail 1;
              echo 
"Ya está en uso este mail.";
            }
          }

          if (
$valid_mail 0) {
            if (
$pass $repass) {
              
mysqli_query($connect"INSERT INTO users SET user='$user', pass='$pass', repass='$repass', mail='$mail'"));
              echo 
"Registrado.";
            }else {
              echo 
"Las contraseñas no coinciden.";
            }
          }
        }
      }
    }

?>



Lo extraño es que no se sale ningún error, pero tampoco ninguno de los avisos que tengo puesto con echo.

Ya he comprobado que tiene conexión a la base de datos e introduce los datos.

Espero que alguien pueda ayudarme, gracias :)

Lo conseguí resolver. Este seria el código final (también he añadido para cifrar la contraseña):
Código (php) [Seleccionar]
<?php

  $user 
$_POST['user'];
  
$mail $_POST['mail'];
  
$pass $_POST['pass'];
  
$repass $_POST['repass'];

  
$connect mysqli_connect("localhost""root""""share");

  if (isset(
$_POST["send"])) {
    if (empty(
$user) or empty($mail) or empty($pass) or empty($repass)) {
      echo 
"Rellene los campos.";
      }else {
        
$rec_user mysqli_query($connect"SELECT * FROM users");
        
$valid_user 0;

        while (
$result mysqli_fetch_object($rec_user)) {
          if (
$result -> user == $user) {
            
$valid_user 1;
            echo 
"Ya existe este usuario.";
          }
        }

        
$rec_mail mysqli_query($connect"SELECT * FROM users");
        
$valid_mail 0;

        while (
$result mysqli_fetch_object($rec_mail)) {
          if (
$result -> mail == $mail) {
            
$valid_mail 1;
            echo 
"Ya está en uso este mail.";
          }
        }
        if (
$valid_user == and $valid_mail == ){
          if (
$pass == $repass) {
            
$passhash('sha512',$pass);

            
mysqli_query($connect"INSERT INTO users (user, mail, pass) VALUES ('$user', '$mail', '$pass')");
            echo 
"Registrado.";
          }else {
            echo 
"Las contraseñas no coinciden.";
          }
        }
      }
    }

?>

engel lex

Nunca revisas por errores de MySQL?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Moand

Cita de: engel lex en 21 Mayo 2016, 18:09 PM
Nunca revisas por errores de MySQL?

Ya lo he intentado añadiendo "or die(mysql_error())", pero no me mostraba nada. Supongo que sera de otra forma.

engel lex

Estas usando mysqli, si usas mysql_error (sin la i)la no pasara nada
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

gAb1

La siguiente linea es imprescindible a la hora de desarrollar una web, ponla al principio de tu index.php:

Código (php) [Seleccionar]
ini_set('display_errors', 1);

Echale un vistazo a las tablas donde se explican los distintos tipos de comparación, si vas a comparar dos valores del tipo entero (o booleanos) usa 3 =

Código (php) [Seleccionar]
if ($valid_user === 0)
if ($valid_user === TRUE)


En el manual de php encontrarás todo lo que necesites, además en la sección de comentarios tendrás mejores explicaciones y ejemplos más avanzados (y útiles).

Moand

Muchas gracias por tu aporte, ahora podre ver los errores mas fácilmente.

Y si alguien sabría como explicarme la diferencia entre == y === le estaría muy agradecido. No logro entender la diferencia entre igual e idéntico.

engel lex

== verifica que los valores son similares, de decir (char)"0" es igual a (int)0, es igual a (boolean)false y es igual a (void)"", así como 1 igual a "1", igual a true....

=== verifica que el contenido y tipo son identicos es decir "0" no es igual a 0 o a false... 0 solo es igual a 0...

debido a la similitud entre 0, "" y false al no usar === en lugares clave, los programas pueden fallar
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

gAb1

El propio término lo está diciendo:

Un valor solo es idéntico a si mismo. Quiere decir que no solo el valor es el mismo, si no que el tipo (string, entero, boolean, flotante, etc...) también.

Ejemplos de diferentes tipos de valores:

Código (php) [Seleccionar]
$string = '123';  // valor del tipo string
$integer = 123; // valor del tipo entero
$boolean = FALSE; // valor del tipo booleano

// TRUE - se cumple la condición
echo $string == $string ? 'si<br />' : 'no<br />';
echo $integer == $integer ? 'si<br />' : 'no<br />';
echo $string === $string ? 'si<br />' : 'no<br />';
echo $integer === $integer ? 'si<br />' : 'no<br />';

echo $string == $integer ? 'si<br />' : 'no<br />';

// FALSE - no se cumple
echo $string === $integer ? 'si<br />' : 'no<br />';


En el ejemplo podemos ver que:

- $string es igual a $integer.

Sin embargo:

- $string no es idéntico a $integer.

Moand

Muchas gracias chicos! Tengo la sensación de que esto me ayudara mucho en un futuro :)