elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Registro PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Registro PHP  (Leído 3,563 veces)
Moand

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Registro PHP
« en: 21 Mayo 2016, 17:48 pm »

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
  1. <?php
  2.  
  3.  $user = $_POST['user'];
  4.  $mail = $_POST['mail'];
  5.  $pass = $_POST['pass'];
  6.  $repass = $_POST['repass'];
  7.  
  8.  $connect = mysqli_connect("localhost", "root", "", "share");
  9.  
  10.  if (isset($_POST["send"])) {
  11.    if ($user = "" or $mail = "" or $pass = "" or $repass = "") {
  12.      echo "Rellene los campos.";
  13.      }else {
  14.        $rec_user = mysqli_query($connect, "SELECT * FROM users");
  15.        $valid_user = 0;
  16.  
  17.        while ($result = mysqli_fetch_object($rec_user)) {
  18.          if ($result -> user = $user) {
  19.            $valid_user = 1;
  20.            echo "Ya existe este usuario.";
  21.          }
  22.        }
  23.  
  24.        if ($valid_user = 0) {
  25.          $rec_mail = mysqli_query($connect, "SELECT * FROM users");
  26.          $valid_mail = 0;
  27.  
  28.          while ($result = mysqli_fetch_object($rec_mail)) {
  29.            if ($result -> mail = $mail) {
  30.              $valid_mail = 1;
  31.              echo "Ya está en uso este mail.";
  32.            }
  33.          }
  34.  
  35.          if ($valid_mail = 0) {
  36.            if ($pass = $repass) {
  37.              mysqli_query($connect, "INSERT INTO users SET user='$user', pass='$pass', repass='$repass', mail='$mail'"));
  38.              echo "Registrado.";
  39.            }else {
  40.              echo "Las contraseñas no coinciden.";
  41.            }
  42.          }
  43.        }
  44.      }
  45.    }
  46.  
  47. ?>
  48.  

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
  1. <?php
  2.  
  3.  $user = $_POST['user'];
  4.  $mail = $_POST['mail'];
  5.  $pass = $_POST['pass'];
  6.  $repass = $_POST['repass'];
  7.  
  8.  $connect = mysqli_connect("localhost", "root", "", "share");
  9.  
  10.  if (isset($_POST["send"])) {
  11.    if (empty($user) or empty($mail) or empty($pass) or empty($repass)) {
  12.      echo "Rellene los campos.";
  13.      }else {
  14.        $rec_user = mysqli_query($connect, "SELECT * FROM users");
  15.        $valid_user = 0;
  16.  
  17.        while ($result = mysqli_fetch_object($rec_user)) {
  18.          if ($result -> user == $user) {
  19.            $valid_user = 1;
  20.            echo "Ya existe este usuario.";
  21.          }
  22.        }
  23.  
  24.        $rec_mail = mysqli_query($connect, "SELECT * FROM users");
  25.        $valid_mail = 0;
  26.  
  27.        while ($result = mysqli_fetch_object($rec_mail)) {
  28.          if ($result -> mail == $mail) {
  29.            $valid_mail = 1;
  30.            echo "Ya está en uso este mail.";
  31.          }
  32.        }
  33.        if ($valid_user == 0 and $valid_mail == 0 ){
  34.          if ($pass == $repass) {
  35.            $pass= hash('sha512',$pass);
  36.  
  37.            mysqli_query($connect, "INSERT INTO users (user, mail, pass) VALUES ('$user', '$mail', '$pass')");
  38.            echo "Registrado.";
  39.          }else {
  40.            echo "Las contraseñas no coinciden.";
  41.          }
  42.        }
  43.      }
  44.    }
  45.  
  46. ?>


« Última modificación: 21 Mayo 2016, 20:56 pm por Moand » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Registro PHP
« Respuesta #1 en: 21 Mayo 2016, 18:09 pm »

Nunca revisas por errores de MySQL?


En línea

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

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Registro PHP
« Respuesta #2 en: 21 Mayo 2016, 18:18 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.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Registro PHP
« Respuesta #3 en: 21 Mayo 2016, 18:27 pm »

Estas usando mysqli, si usas mysql_error (sin la i)la no pasara nada
En línea

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


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Registro PHP
« Respuesta #4 en: 23 Mayo 2016, 18:24 pm »

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

Código
  1. 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
  1. if ($valid_user === 0)
  2. 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).
En línea

Moand

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Registro PHP
« Respuesta #5 en: 23 Mayo 2016, 22:30 pm »

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.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Registro PHP
« Respuesta #6 en: 24 Mayo 2016, 00:22 am »

== 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
En línea

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


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: Registro PHP
« Respuesta #7 en: 24 Mayo 2016, 00:23 am »

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
  1. $string = '123';  // valor del tipo string
  2. $integer = 123; // valor del tipo entero
  3. $boolean = FALSE; // valor del tipo booleano
  4.  
  5. // TRUE - se cumple la condición
  6. echo $string == $string ? 'si<br />' : 'no<br />';
  7. echo $integer == $integer ? 'si<br />' : 'no<br />';
  8. echo $string === $string ? 'si<br />' : 'no<br />';
  9. echo $integer === $integer ? 'si<br />' : 'no<br />';
  10.  
  11. echo $string == $integer ? 'si<br />' : 'no<br />';
  12.  
  13. // FALSE - no se cumple
  14. 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.
En línea

Moand

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Registro PHP
« Respuesta #8 en: 24 Mayo 2016, 18:34 pm »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
registro en vb
Programación Visual Basic
Mr Dialup 1 3,576 Último mensaje 10 Diciembre 2003, 05:18 am
por byebye
Sistema de Login - Registro [Usando el registro de Windows]
Programación Visual Basic
ToNy_EsP 2 4,247 Último mensaje 28 Febrero 2009, 18:10 pm
por seba123neo
"No se puede agregar o cambiar el registro porque se necesita un registro relaci
.NET (C#, VB.NET, ASP)
Guillito 1 3,287 Último mensaje 16 Abril 2015, 21:03 pm
por fran800m
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines