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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 22


Nobody will remember a scum like you!


Ver Perfil
Sistema de registro de usuarios
« en: 12 Diciembre 2013, 16:34 pm »

Hoy vengo a aportar mi granito de arena y que forma de hacerlo con un pequeno script que desarrolle en PHP y Mysql para la creacion de un sistema para el registro de usuarios.Quizas sea muy basico pero se puede modificar a gusto de cada quien ;)

Registrarse.php
Código
  1. <html>
  2. <head>
  3. <title>Alta de usuarios</title>
  4. </head>
  5. <body>
  6. <form name="registro" method="POST" action="registrar.php">
  7. <table width="200" border="0">
  8. <tr>
  9. <td><label>Nombre:</label></td>
  10. <td><input type="text" name="nombre" /></td>
  11. </tr>
  12.  
  13. <tr>
  14. <td><label>Nombre de usuario:</label></td>
  15. <td><input type="text" name="user" /></td>
  16. </tr>
  17.  
  18. <tr>
  19. <td><label>Password:</label></td>
  20. <td><input type="password" name="pw" /></td>
  21. </tr>
  22.  
  23. <tr>
  24. <td><label>Confirmar password:</label></td>
  25. <td><input type="password" name="pw2" /></td>
  26. </tr>
  27.  
  28. <tr>
  29. <td><label>Email:</label></td>
  30. <td><input type="text" name="email" /></td>
  31. </tr>
  32.  
  33. <tr>
  34. <td></td>
  35. <td><input type="submit" value="Registrarse" /></td>
  36. </tr>
  37. </table>
  38. </form>

Registrar.php
Código
  1. <?php
  2. //Include del archivo de conexion a la base de datos
  3. include("conexion.php");
  4. ///Comprueba que no exista ningun campo vacio
  5. if(isset($_POST['nombre']) && !empty ($_POST['nombre'])&&
  6. isset($_POST['user']) && !empty ($_POST['user'])&&
  7. isset($_POST['pw']) && !empty ($_POST['pw'])&&
  8. (isset($_POST['pw2']) && !empty ($_POST['pw2'])&&
  9. (isset($_POST['email']) && !empty ($_POST['email'])&&
  10. $_POST['pw'] == $_POST['pw2'])))
  11. {
  12. //Realiza conexion al servidor
  13. $conectar = mysql_connect($host,$user,$pw)
  14. //Si no concuerdan los datos lanza error.
  15. or die("No se puede conectar.");
  16. //Seleccion de la base de datos
  17. mysql_select_db($db,$conectar)
  18. or die("Error al a la base de datos.");
  19. ///Inserta los datos en la tabla registro
  20. mysql_query("INSERT INTO  () VALUES ('$_POST[nombre]','$_POST[user]','$_POST[pw]','$_POST[email]')",
  21. $conectar);
  22. echo "El usuario se ha registrado correctamente con los siguientes datos:";
  23. echo "<br>";
  24. echo "Nombre:".$_POST['nombre'];
  25. echo "<br>";
  26. echo "Usuario:".$_POST['user'];
  27. echo "<br>";
  28. echo "Email:".$_POST['email'];
  29. } else
  30. {
  31. echo "Verifica que no haya ningun campo vacio y los passwords coincidan.";
  32. }
  33. ?>

conexion.php
Código
  1. <?php
  2. /*Aqui se introducen los datos de la base de datos
  3. */
  4. //Host de la base datos(ESTE VIENE POR DEFECTO COMO localhost)
  5. $host = "";
  6. //Usuario de la base de datos(POR DEFECTO VIENE COMO ROOT)
  7. $user = "";
  8. //Tu Password
  9. $pw = "";
  10. //Tu base de datos
  11. $db = "";
  12. ?>

Solo espero que no se me haya pasado borrar algun dato de login a la base de datos mientras lo probaba.

Saludos.


« Última modificación: 12 Diciembre 2013, 16:36 pm por Hacker290 » En línea

keplerish

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Sistema de registro de usuarios
« Respuesta #1 en: 17 Diciembre 2013, 13:27 pm »

Toda esa cadena de comprobación con issets no es nada "elegante", y repites continuamente código.

Por otro lado, debes limpiar siempre los datos que introduce el usuario (ya sea GET, POST o cualquier otro), mucho más cuando lo vas a introducir en la base de datos.

Saludos


« Última modificación: 17 Diciembre 2013, 13:38 pm por keplerish » En línea

Hazama

Desconectado Desconectado

Mensajes: 22


Nobody will remember a scum like you!


Ver Perfil
Re: Sistema de registro de usuarios
« Respuesta #2 en: 18 Diciembre 2013, 04:19 am »

Toda esa cadena de comprobación con issets no es nada "elegante", y repites continuamente código.

Por otro lado, debes limpiar siempre los datos que introduce el usuario (ya sea GET, POST o cualquier otro), mucho más cuando lo vas a introducir en la base de datos.

Saludos

soy un poco nuevo en PHP y creo que considerare mucho lo que dices
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Sistema de registro de usuarios
« Respuesta #3 en: 18 Diciembre 2013, 06:15 am »

Lo que haces en el if es bastante feo (como dice el compañero) y mas teniendo en cuenta que isset y empty son "mas o menos" lo mismo.

Isset comprobara que la variable esta declarada mientras que empty comprobara si esta declarada y si no esta vacía. Por tanto, solo con empty ya te basta.

Por otro lado, hay un problema.. empty no acepta 0 de valor y retorna false. Para eso, cuando se trata de strings y números, es mejor hacer una comparación con isset y strlen.

Una manera "bonita" de hacerlo es usando una función.
Código
  1. <?php
  2. function comprobar(){
  3.   foreach(func_get_args() as $param){
  4.      if(isset($param)&&strlen($param)>0){continue;}
  5.      else{return false;}
  6.   }
  7.   return true;
  8. }
  9.  
  10. var_dump(comprobar($variable,$variable2,$variable3));
  11. ?>

Esta función, cogerá todos los parámetros que le pases y comprobara a ver si están definidos + si su longitud es mayor a 0 caracteres.

Implementandola en tu código, el if se quedaría así:
Código
  1. if(!empty($_POST) &&
  2. comprobar($_POST['nombre'],$_POST['user'],$_POST['pw'],$_POST['pw2'],$_POST['email']) &&
  3. $_POST['pw']===$_POST['pw2']){
  4. /* Codigo aqui **/
  5. }



Nota que uso 3 = (===) en vez de 2 (==). Te explico. Cuando usas == PHP buscara a ver si la cadena que comparas es igual a la otra. Esto produce un riesgo de seguridad ya que si le indicas a PHP que compare un numero vs un string, PHP convertirá el string a int (y cualquier string convertido a int retorna 0). Ejemplo:

Código
  1. if('abcd'==0){echo 'Son iguales';}else{echo 'No son iguales';}

Utilizando 3= (===), PHP mira a ver si las dos cadenas son idénticas y no si son iguales.. de este modo te saltas este problema. Afortunadamente, HTTP no diferencia entre int y string, trata todo como string, así que no llegaras a este problema en tu código pero es posible que en otro entorno si que se reproduzca y tendrás un buen problema...En fin, acostúmbrate a usar === para comprar strings.



Usa mysqli o PDO.. no uses mysql.. ya esta mas que obsoleto.
http://es.php.net/mysqli
http://es.php.net/pdo



Usa siempre un captcha o en su defecto una limitación si vas a enviar datos a la BD sin mas.. los usuarios pueden ser cabrones y ponerse a enviar miles de consultas a tu BD.



Nunca te fíes del usuario.. siempre limpia y comprueba los campos que recibes de ellos para evitar injeciones.
En este caso tanto mysqli como PDO proporcionan sentencias preparadas que minimizan el efecto de sqli.

http://es.php.net/manual/es/mysqli.quickstart.prepared-statements.php
http://es.php.net/manual/es/pdo.prepared-statements.php

Saludos
En línea

#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Re: Sistema de registro de usuarios
« Respuesta #4 en: 19 Diciembre 2013, 09:47 am »

Hoy vengo a aportar mi granito de arena y que forma de hacerlo con un pequeno script que desarrolle en PHP y Mysql para la creacion de un sistema para el registro de usuarios.Quizas sea muy basico pero se puede modificar a gusto de cada quien ;)

Registrarse.php
Código
  1. <html>
  2. <head>
  3. <title>Alta de usuarios</title>
  4. </head>
  5. <body>
  6. <form name="registro" method="POST" action="registrar.php">
  7. <table width="200" border="0">
  8. <tr>
  9. <td><label>Nombre:</label></td>
  10. <td><input type="text" name="nombre" /></td>
  11. </tr>
  12.  
  13. <tr>
  14. <td><label>Nombre de usuario:</label></td>
  15. <td><input type="text" name="user" /></td>
  16. </tr>
  17.  
  18. <tr>
  19. <td><label>Password:</label></td>
  20. <td><input type="password" name="pw" /></td>
  21. </tr>
  22.  
  23. <tr>
  24. <td><label>Confirmar password:</label></td>
  25. <td><input type="password" name="pw2" /></td>
  26. </tr>
  27.  
  28. <tr>
  29. <td><label>Email:</label></td>
  30. <td><input type="text" name="email" /></td>
  31. </tr>
  32.  
  33. <tr>
  34. <td></td>
  35. <td><input type="submit" value="Registrarse" /></td>
  36. </tr>
  37. </table>
  38. </form>

Registrar.php
Código
  1. <?php
  2. //Include del archivo de conexion a la base de datos
  3. include("conexion.php");
  4. ///Comprueba que no exista ningun campo vacio
  5. if(isset($_POST['nombre']) && !empty ($_POST['nombre'])&&
  6. isset($_POST['user']) && !empty ($_POST['user'])&&
  7. isset($_POST['pw']) && !empty ($_POST['pw'])&&
  8. (isset($_POST['pw2']) && !empty ($_POST['pw2'])&&
  9. (isset($_POST['email']) && !empty ($_POST['email'])&&
  10. $_POST['pw'] == $_POST['pw2'])))
  11. {
  12. //Realiza conexion al servidor
  13. $conectar = mysql_connect($host,$user,$pw)
  14. //Si no concuerdan los datos lanza error.
  15. or die("No se puede conectar.");
  16. //Seleccion de la base de datos
  17. mysql_select_db($db,$conectar)
  18. or die("Error al a la base de datos.");
  19. ///Inserta los datos en la tabla registro
  20. mysql_query("INSERT INTO  () VALUES ('$_POST[nombre]','$_POST[user]','$_POST[pw]','$_POST[email]')",
  21. $conectar);
  22. echo "El usuario se ha registrado correctamente con los siguientes datos:";
  23. echo "<br>";
  24. echo "Nombre:".$_POST['nombre'];
  25. echo "<br>";
  26. echo "Usuario:".$_POST['user'];
  27. echo "<br>";
  28. echo "Email:".$_POST['email'];
  29. } else
  30. {
  31. echo "Verifica que no haya ningun campo vacio y los passwords coincidan.";
  32. }
  33. ?>

conexion.php
Código
  1. <?php
  2. /*Aqui se introducen los datos de la base de datos
  3. */
  4. //Host de la base datos(ESTE VIENE POR DEFECTO COMO localhost)
  5. $host = "";
  6. //Usuario de la base de datos(POR DEFECTO VIENE COMO ROOT)
  7. $user = "";
  8. //Tu Password
  9. $pw = "";
  10. //Tu base de datos
  11. $db = "";
  12. ?>

Solo espero que no se me haya pasado borrar algun dato de login a la base de datos mientras lo probaba.

Saludos.

Me parece un poco hipócrita darte el crédito a ti, cuando es el mismo código el del curso de PHP de "Código facilito".

Pero bueno, no está de más compartir, un saludo.
« Última modificación: 19 Diciembre 2013, 09:48 am por #Aitor » En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Integrar usuarios SMF con mi sistema de usuarios (y no al reves)
PHP
Alex_bro 3 3,942 Último mensaje 18 Julio 2008, 05:55 am
por nicolasc
Sistema de Login - Registro [Usando el registro de Windows]
Programación Visual Basic
ToNy_EsP 2 4,046 Último mensaje 28 Febrero 2009, 18:10 pm
por seba123neo
Sistema de registro de usuarios con rangos.
PHP
GonzaFz 2 3,671 Último mensaje 2 Febrero 2013, 06:39 am
por GonzaFz
AYUDA Registro y sistema de verificación de usuarios
PHP
J0RG325 2 2,128 Último mensaje 11 Abril 2013, 16:55 pm
por Phantasy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines