Categorías > Lenguajes > PHP > Creando un registro de usuarios en PHP ...
Nuevo Mensaje | Responder
mandrake


134 envíos
Desconectado
2043 lecturas
12 respuestas
Creando un registro de usuarios en PHP12-05-2010 a las 15:02:58

Hola gente, en los últimos días me he metido de lleno en esto de la programación web; y me he propuesto como primera tarea crear un registro de usuarios (Una tarea bastante común, en las aplicaciones web).

Prácticamente ya lo tengo todo... A que me refiero:

  • Crear formulario
  • Recoger los  datos del formulario, ingresados por los usuarios.
  • Generar un nombre de usuario y un password
  • Cifrar con md5, el usuario y el password generados
  • verificar que el usuario y el password cifrado; ya no existan en la base de datos; en caso de existir... se vuelven a hacer los dos pasos anteriores.

  • Ingresar los datos ingresados por el usuario en el formulario; en la base de datos.
  • Ingresar el usuario y el password cifrados a la base de datos
  • Enviar usuario y password, al correo del usuario que solicita el registro


Es primera vez que hago algo semejante (ohhhhh, me siento PRO DDDD); y quisiera saber sus opiniones; sí es correcto, si puedo agregar algo mejor, ssi puedo  mejorar  la seguridad; etc....

Muchas gracias de antemano!



"Cuando estás en un atasco de tráfico con un Porsche, todo lo que puedes hacer es consumir más combustible que el resto estando parado. La escalabilidad va de construir carreteras más anchas, no coches más rápidos"
Responder | Citar | Moderar | Mensaje Privado
Training Channel
mandrake


134 envíos
Desconectado

#1
RE: Creando un registro de usuarios en PHP12-05-2010 a las 15:10:44

También he validado todo en el formulario...
Como dije, todo parece funcionar correctamente al menos no me he encontrado ningun bug; sin embargo, como es la primera vez que hago un registro para aplicacion web, quiero estar seguro de sí lo que he hecho es lo correcto; sí debo cambiar algo y sobre todo lo que me preocupa mucho más en el tema de la seguridad...

Por ejemplo:

Tengo un connect.php con el que me conecto a la base de datos... ok.
Sin embargo, los datos de acceso (mi usuario, el host, mi password) estan hardcode en dicho archivo.
Y, me parece que eso no debe hacer se de esta manera... pero como no sé; les pido el favor que ayuden brindando alguna info, o algun enlace en donde pueda averiguar esta y otras cosas con respecto a la seguridad.

Muchas gracias!

"Cuando estás en un atasco de tráfico con un Porsche, todo lo que puedes hacer es consumir más combustible que el resto estando parado. La escalabilidad va de construir carreteras más anchas, no coches más rápidos"
Responder | Citar | Moderar | Mensaje Privado
CHuLoYo


762 envíos
Desconectado

#2
RE: Creando un registro de usuarios en PHP12-05-2010 a las 16:36:55

Mejor publica el código aunque sea parcial para hacernos una idea global y ayudarte a mejorarlo.

En principio tus ideas son perfectas para evitar cualquier tema de seguridad pero no lo sabremos hasta que nos enseñes algo de código.

¿Te has basado en el capítulo de php de ejemplo práctico?

Saludos!

www.Esquio.net | Diseño y programación web profesional
Responder | Citar | Moderar | Mensaje Privado
CHuLoYo


762 envíos
Desconectado

#3
RE: Creando un registro de usuarios en PHP12-05-2010 a las 16:37:56

Vuelvo a mover el hilo a la categoría Lenguajes -> PHP

Cuidemos esto por favor

Saludos

www.Esquio.net | Diseño y programación web profesional
Responder | Citar | Moderar | Mensaje Privado
mandrake


134 envíos
Desconectado

#4
RE: Creando un registro de usuarios en PHP12-05-2010 a las 17:36:45

Solo en la parte en que necesite el uso de arreglos.

"Cuando estás en un atasco de tráfico con un Porsche, todo lo que puedes hacer es consumir más combustible que el resto estando parado. La escalabilidad va de construir carreteras más anchas, no coches más rápidos"
Responder | Citar | Moderar | Mensaje Privado
CHuLoYo


762 envíos
Desconectado

#5
RE: Creando un registro de usuarios en PHP12-05-2010 a las 17:38:07

Entonces el código?

www.Esquio.net | Diseño y programación web profesional
Responder | Citar | Moderar | Mensaje Privado
mandrake


134 envíos
Desconectado

#6
RE: Creando un registro de usuarios en PHP12-05-2010 a las 17:51:33

Aqui va el code...


<?php       

$connString;

       function mysqlConn()
       {

              /*CONECTANDO Y ESCOGIENDO BASE DE DATOS*/
              $user    = "root";
              $password = "25196474";
              $server  = "localhost";
              $database = "liccampos";              
       
              $connString = mysql_pconnect($server, $user, $password) or die ("Falló la conexión a la base de datos");
              mysql_select_db($database, $connString) or die ("Base de datos no encontrada !!");
              return $connString;
       }
?>


En el siguiente code; necesito hacer algunos arreglos; en sí funciona pero lo más seguro es que salga uno q otro bug; en caso tal se genere un usuario y password usado ya anteriormente.

<?php
/*necesario para generar y cifrar el usuario y clave para el registro*/
$letras1;
$letras2;
$num4;
$num5;

       function cifrado($connString, $newuser)
       {

       /*generando user y pass para el nuevo usuario*/

              /*para la clave*/       
              $num5 = rand(10000,99999); /*generando un big num*/

                     /*escogiendo tres letras del nombre del usuario*/
              $letras1 = substr($newuser['Nombre'],0,3);

                     /*uniendo la cadena final*/
              $newuser['claveNew'] = $letras1.$num5;

                     /*Cifrando*/
              $newuser['passCifrig'] = md5($newuser['claveNew']);       

              /*para el usuario*/
                     /*generando un big num*/
              $num4 = rand(10000,99999);
                     /*escogiendo tres letras del nombre del usuario*/
              $letras2 = substr($newuser['Nombre'],0,3);
                     /*uniendo cadena final*/
              $newuser['usuarioNew'] = $num4.$letras2;
                     /*cifrando*/
              $newuser['nameCifrig'] = md5($newuser['usuarioNew']);

              /*BUSCANDO Y COMPARANDO USUARIO*/
                     /*ESTA PARTE DEBO MEJORARLA... EXISTE UN BUG*/
              $registros=mysql_query("SELECT autentificacion_id FROM autentificacion WHERE usuario = '".$newuser['nameCifrig']."' AND clave = '".$newuser["passCifrig"]."'",$connString) or die("Problemas en el select:".mysql_error());
       while ($reg=mysql_fetch_array($registros))
       {$id_User = $reg['autentificacion_id'];}
       
       
       if($id_user == null)       
       {$newuser['userpass'] = true;}
       else
       {$newuser['userpass'] = false;}



                      return array($newuser['Nombre'],$newuser['Cedula'],$newuser['Telefono'],$newuser['Celular'],$newuser['Correo'],$newuser['Residencia'],$newuser['Abogado'],$newuser['Birthday'],$newuser['claveNew'],$newuser['usuarioNew'],$newuser['nameCifrig'],$newuser['passCifrig'],$newuser['userpass']);
                     /*LLAMAR AL METODO PARA ENVIAR ALL */
       
       }
?>



<?php
       function addreg($connString,$newuser)
       {



       /*id del usuario recien registrado*/
       $id_User;
       //$isok = false;

       //try{
       $isok = $newuser[12];
       if($isok == true)
       {/*AGREGAMOS A LA BASE DE DATOS*/

       /*agregamos la info del usuario*/
        mysql_query("INSERT INTO usuario (nombre,cedula,birthday,abogado_id,rango,telf,cell,correo,residencia) VALUES ('".$newuser[0]."','".$newuser[1]."', '".$newuser[7]."', '".$newuser[6]."', '3','".$newuser[2]."','".$newuser[3]."','".$newuser[4]."','".$newuser[5]."')",$connString) or die("Problemas en el select:".mysql_error());

       /*buscamos el id de ese usuario*/
       $registros=mysql_query("SELECT usuario_id FROM usuario WHERE nombre LIKE '".$newuser[0]."' AND cedula LIKE '".$newuser[1]."'",$connString) or die("Problemas en el selected:".mysql_error());
       while ($reg=mysql_fetch_array($registros))
       {$id_User = $reg['usuario_id'];}

       /*AGREGAMOS EL USUARIO Y CONTRASEÑA CIFRADA A LA BASE DE DATOS*/
               mysql_query("INSERT INTO autentificacion (usuario,clave,usuario_id) VALUES ('".$newuser[10]."','".$newuser[11]."', '".$id_User."')",$connString) or die("Problemas en el select:".mysql_error());
       }

       $newuser[12] = true;
       

       return array($newuser[0],$newuser[1],$newuser[2],$newuser[3],$newuser[4],$newuser[5],$newuser[6],$newuser[7],$newuser[8],$newuser[9],$newuser[10],$newuser[11],$newuser[12]);

}
?>


En el siguiente code; tomo los datos del formulario... y llamo al resto de las funciones.


<?php
include("connect.php");
include("cifrig.php");
include("addregistro.php");
include("set_infoClient.php");

/*alojaran la info que viene del formulario*/

$newuser['Nombre'] = $_POST['name'];
$newuser['Cedula'] = $_POST['cedula'];
$newuser['Telefono'] = $_POST['telf'];
$newuser['Celular'] = $_POST['cell'];
$newuser['Correo'] = $_POST['correo'];
$newuser['Residencia'] = $_POST['address'];
$newuser['Abogado'] = $_POST['abogado'];
$newuser['Birthday'] = $_POST['Birthday'];
$newuser['claveNew'] = 0;
$newuser['usuarioNew'] = "";
$newuser['nameCifrig'] = "";
$newuser['passCifrig'] = "";

$newuser['userpass'] = false;

$isit = true;
$isok;
$connString = mysqlConn();
$newuserInfo = $newuser;


$usuarionew = cifrado($connString,$newuserInfo);

$arrayInfo = addreg($connString,$usuarionew);

/*si todo se agrego bien a la base de datos...se le envia al usuario su nombre de usuario y clave
esta parte no me envia aun el correo... DDDDDD*/

if($arrayInfo[12] == true)
{
$destinatario = $arrayInfo[4];
$asunto = "Registro -- NOMBRE DE LA FIRMA";
$cuerpo = "<p>
Bienvenidos a NOMBRE DE LA FIRMA.</p> <br/>
Su usuario es: ".$arrayInfo[9]." <br/>"."Su clave es: ".$arrayInfo[8]." <br/>"."MUCHAS GRACIAS POR CONTAR CON NOSOTROS!";

mail($destinatario,$asunto,$cuerpo);

}

?>

"Cuando estás en un atasco de tráfico con un Porsche, todo lo que puedes hacer es consumir más combustible que el resto estando parado. La escalabilidad va de construir carreteras más anchas, no coches más rápidos"
Responder | Citar | Moderar | Mensaje Privado
CHuLoYo


762 envíos
Desconectado

#7
RE: Creando un registro de usuarios en PHP13-05-2010 a las 05:55:45

Me gusta el sistema. Luego guardas session o cookie?

www.Esquio.net | Diseño y programación web profesional
Responder | Citar | Moderar | Mensaje Privado
mandrake


134 envíos
Desconectado

#8
RE: Creando un registro de usuarios en PHP13-05-2010 a las 09:47:32

ehhh nop...
lo que pensaba era que después de hacer todo; se redireccionará a la pagina principal; y que el usuario revise su mail, y que se loggee.

podrías explicarme un poco eso que me cuentas? por favor!

"Cuando estás en un atasco de tráfico con un Porsche, todo lo que puedes hacer es consumir más combustible que el resto estando parado. La escalabilidad va de construir carreteras más anchas, no coches más rápidos"
Responder | Citar | Moderar | Mensaje Privado
Sorancio


307 envíos
Desconectado

#9
RE: Creando un registro de usuarios en PHP13-05-2010 a las 11:33:19

Por simplificar los conceptos, una sesión se guarda en el servidor, mientras una cookie se guarda en el cliente. Parece muy bueno el código :D ¿Has probado el algoritmo de encriptación RSA? Es de los más seguro ya que trabaja con números primos .


Responder | Citar | Moderar | Mensaje Privado
mandrake


134 envíos
Desconectado

#10
RE: Creando un registro de usuarios COMPLETO en PHP13-05-2010 a las 14:27:41

Investigaré más al respecto.
Otra cosa que deseo implementar es...

Gestionar los usuarios mediante una jerarquia de directorios.

En sí existiran varios tipos de usuarios:
- Root ===> Usuario "con poderes de super vaca..."(Completo control de todo) como se dice en gnu/linux

- Admin ===> Usuario que podrá, crear otros usuarios (Usuarios normales), mantener en sí la aplicación.

- Normales ===> Podrá hacer uso de los servicios prestados, comunicarse con otros usuarios, entre otras funciones.
--------------------------------------------------------------------------------------------
Ahora bien... como implementarlo; he pensado en crear como dije una jerarquia de carpetas.

+++Carpeta PrincipalDueño el usuario Root "poderes super vaca"|
--------------Carpetas normal 001(Dueño X usuario normal)
----------------------Archivos del usuario X
--------------Carpetas normal 002(Dueño X+1 usuario normal)
----------------------Archivos del usuario X+1
--------------Carpetas normal 003(Dueño X+2 usuario normal)
--------------Carpetas normal 004(Dueño X+3 usuario normal)
--------------Carpetas normal 005(Dueño X+4 usuario normal)

En resumidas es como la grestion de usuarios y grupos en GNU/Linux.

Ahora bien la pregunta es...

- Existe algo que me permita crear usuarios/grupos, designar poderes etc... en sistemas gnu/linux; usando php¿?

- Si no existe dicha herramienta; como puedo implementarlo con la misma Seguridad que los sistemas gnu/linux.


"Cuando estás en un atasco de tráfico con un Porsche, todo lo que puedes hacer es consumir más combustible que el resto estando parado. La escalabilidad va de construir carreteras más anchas, no coches más rápidos"
Responder | Citar | Moderar | Mensaje Privado
1 2