Autor Tema: [Aporte] Sistema de Usuarios (Login+Registro)  (Leído 6655 veces)

Desconectado Jumarras

  • PHPer@
  • **
  • Mensajes: 73
  • Karma: 3
  • Sexo: Masculino
  • Ten cerca a tus amigos, pero mas a tus enemigos
    • Ver Perfil
[Aporte] Sistema de Usuarios (Login+Registro)
« en: 25 de Septiembre de 2010, 16:07:47 pm »
Hola, hace mucho que no comento nada en el foro, siempre hos adelantais a las respuestas xD. Bueno, pues he estado empezando a mirar un poco el POO, y la verdad, me ha parecido sencillo (cuando he visto el sistema de login de siquillote y algun otro post). El caso es que he estado pasando mis archivos que tenia hechos, como el sistema de usuarios, a POO, y me gustaria compartirlo con vosotros. Se parece al sistema de loguin de siquillote, pero este lo hice yo usando de base mi login. Asi que esta comprobado que funciona correctamente.

Este sistema ya viene protegido contra MySQL Injection, o eso creo, porque los $_POST estan filtrados. La contraseña de los usuarios esta encriptado en MD5. Aun asi me gustaria que le hechaseis un vistazo y comentarlo para haber como puedo mejorarlo o lo que sea.

Salu2

login.php
Código: [Seleccionar]
<?php
class login
{
    public 
$user;
    public 
$post_password;
    public 
$query;
    public 
$mysql_password;
    public 
$error;
    public 
$ok;
    public 
$numrows;
    public 
$fields;

    public function 
__construct($username$password)
    {    
        include 
"config.php";
        
$this->user                 =    $username;
        
$this->post_password    =    $password;
        
$this->query             =    mysql_query("SELECT * FROM users WHERE username = &#39;".$this->user."&#39;");
        
$this->mysql_password    =    mysql_fetch_array($this->query);
        
$this->numrows            =    mysql_num_rows($this->query);
        
$this->error            =    "Nombre de usuario o contraseña incorrectos.";
        
$this->ok                =    "Bienvenido ".$this->user.". Te has logueado correctamente.";
        
$this->fields            =    "Por favor, rellena todos los campos.";
    }
    public function 
check()
    {
        if(
$this->user && $this->post_password)
        {
            if(
$this->numrows !=0)
            {
                if(
$this->mysql_password[&#39;password&#39;] == md5($this->post_password))
                
{
                    
session_start();
                    
$_SESSION[&#39;username&#39;] = $this->user;
                    
echo $this->ok;
                }
                else
                {
                    echo 
$this->error;
                }
            }
            else
            {
                echo 
$this->error;
            }
        }
        else
        {
            echo 
$this->fields;
        }
    }
}
include_once 
"clear.php";
$login = new login(clear($_POST[&#39;username&#39;]), clear($_POST[&#39;password&#39;]));
echo $login->check();
?>

login.html
Código: [Seleccionar]
<form name="login" method="post" action="login.php">
    Username: <input name="username" class="textbox" type="text"></br>
    Password: <input name="password" class="textbox" type="password"></br>                   
    <input name="login" value="Login" class="button" type="submit"></br>       
</form>

register.php
Código: [Seleccionar]
<?php
class register
{
    public 
$user;
    public 
$password;
    public 
$repassword;
    public 
$email;
    public 
$fullname;
    public 
$query;
    public 
$numrows;
    public 
$error;
    public 
$error2;
    public 
$error3;
    public 
$error4;
    public 
$ok;
    public 
$fields;
    public 
$regquery;
    
    public function 
__construct($username$password$repeatpassword,  $email$fullname)
    {
    include 
"config.php";
        
$this->user         =    $username;
        
$this->password        =    $password;
        
$this->repassword    =    $repeatpassword;
        
$this->email        =    $email;
        
$this->fullname        =    $fullname;
        
$this->query        =    mysql_query("SELECT * FROM users WHERE username = &#39;".$this->user."&#39;");
        
$this->numrows        =    mysql_num_rows($this->query);
        
$this->error        =    "Nombre de usuario en uso.";
        
$this->error2        =    "Las contraseñas no coinciden";
        
$this->error3        =    "Nombre completo y/o nombre de usuarios superan los 25 caracteres.";
        
$this->error4        =    "La contraseña debe tener un minimo de 6 caracteres y un maximo de 25";
        
$this->ok            =    "Te has registrado correctamente";
        
$this->fields        =    "Por favor, rellena todos los campos.";
    }
    public function 
check()
    {
        if(
$this->numrows!=0)
        {
            die (
$this->error);
        }
        if(
$this->user&&$this->password&&$this->email&&$this->fullname)
        {
            if(
$this->password == $this->repassword)
            {
                if(
strlen($this->username)>25||strlen($this->fullname)>25)
                {
                    echo 
$this->error3;
                }
                else
                {
                    if(
strlen($this->password)>25||strlen($this->password)<6)
                    {
                        echo 
$this->error4;
                    }
                    else
                    {
                        
$this->password md5($this->password);
                        
$register mysql_query("INSERT INTO `users` (`id`, `fullname`, `username`, `password`, `email`, `admin`) VALUES (NULL, &#39;".$this->fullname."&#39;, &#39;".$this->user."&#39;, &#39;".$this->password."&#39;, &#39;".$this->email."&#39;, &#39;0&#39;)");
                        echo 
$this->ok;
                    }
                }
            }
            else
            {
                echo 
$this->error2;
            }            
        }
        else
        {
            echo 
$this->fields;
        }
    }
}
include_once 
"clear.php";
$reg = new register(clear($_POST[&#39;username&#39;]), clear($_POST[&#39;password&#39;]), clear($_POST[&#39;repeatpassword&#39;]), clear($_POST[&#39;email&#39;]), clear($_POST[&#39;fullname&#39;]));
echo $reg->check();
?>

register.html
Código: [Seleccionar]
<form action='register.php' method='POST'>
    Fullaname: <input type='text' name='fullname' class="textbox"></br>
    Username: <input type='text' name='username' class="textbox"></br>
    Password: <input type='password' name='password' class="textbox"></br>
    Repeat Password: <input type='password' name='repeatpassword' class="textbox"></br>
    E-Mail: <input type='text' name='email' class="textbox"></br>
    <input type='submit' name='submit' value='Register' class="button">
</form>

clear.php
Código: [Seleccionar]
<?php
function clear($texto)
{
    
$limpio strip_tags($texto);
    
$limpio htmlspecialchars($limpio);
    
$limpio stripslashes($limpio);
    return 
$limpio;
}
?>

config.php
Código: [Seleccionar]
<?php

$error1 
= &#39;Problem connecting to Host&#39;;
$error2 = &#39;Problem connecting to MySQL&#39;;
$connect mysql_connect (&#39;hostmysql&#39;,&#39;usuariomysql&#39;,&#39;contraseñamysql&#39;) or die($error1);
$db mysql_select_db (&#39;basededatos&#39;) or die($error2);

?>

Mysql
Código: [Seleccionar]
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fullname` varchar(100) NOT NULL DEFAULT '',
  `username` varchar(25) NOT NULL DEFAULT '',
  `password` varchar(100) NOT NULL DEFAULT '',
  `email` varchar(100) NOT NULL DEFAULT '',
  `admin` char(1) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
)

Creditos: Siquillote (del sistema de usuarios que he aprendido poo)
« Última modificación: 30 de Septiembre de 2010, 10:27:44 am por Jumarras »

Comunidad PHPeros

[Aporte] Sistema de Usuarios (Login+Registro)
« en: 25 de Septiembre de 2010, 16:07:47 pm »

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #1 en: 25 de Septiembre de 2010, 16:11:27 pm »

¡Muy bueno!. Por lo que veo, has cogido mi sistema de usuarios y le has agregado un registro pero aun así esta muy
bien. Caundo tenga tiempo lo pruebo ;P

#Fdo. Physlet

Desconectado CriisDark

  • PHPerit@
  • *
  • Mensajes: 44
  • Karma: 0
  • Sexo: Masculino
  • Phpero aprendiendo...
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #2 en: 25 de Septiembre de 2010, 16:12:00 pm »
Te has pasado  :o
Te daria karmas pero no se como se dan  :confused:


            :rstar: :rstar: :rstar: :rstar: :rstar:
<?php
$phperos = magia;
$magia = phperos;

$result = $phperos + $magia
echo "phperos mas magia es igual a $result ";

?>

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #3 en: 25 de Septiembre de 2010, 16:13:09 pm »
Te has pasado  :o
Te daria karmas pero no se como se dan  :confused:

Es cuando llegas a 25 post, te saldrá una flechita verde debajo de cada usuario y esos significa sumarle un karma.

#Fdo. Physlet

Desconectado CriisDark

  • PHPerit@
  • *
  • Mensajes: 44
  • Karma: 0
  • Sexo: Masculino
  • Phpero aprendiendo...
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #4 en: 25 de Septiembre de 2010, 16:15:52 pm »
Gracias, Siquillote     :(
<?php
$phperos = magia;
$magia = phperos;

$result = $phperos + $magia
echo "phperos mas magia es igual a $result ";

?>

Desconectado Jumarras

  • PHPer@
  • **
  • Mensajes: 73
  • Karma: 3
  • Sexo: Masculino
  • Ten cerca a tus amigos, pero mas a tus enemigos
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #5 en: 25 de Septiembre de 2010, 16:18:05 pm »
Bueno siquillote, no he usado tu sistema de login al 100%, solo lo he usado para aprender el poo, es asi como yo aprendo, con ejemplos, y asi es como aprendi php xD. Este sistema que he usado lo he "basado" en el tuyo, porque he aprendido de el, pero he usado el login y registro que uso yo, el que no esta en poo para hacerlo.

Pero bueno, no queria "plagiar" nada, si es por eso, te pongo los creditos.

Salu2

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #6 en: 25 de Septiembre de 2010, 16:19:43 pm »
Bueno siquillote, no he usado tu sistema de login al 100%, solo lo he usado para aprender el poo, es asi como yo aprendo, con ejemplos, y asi es como aprendi php xD. Este sistema que he usado lo he "basado" en el tuyo, porque he aprendido de el, pero he usado el login y registro que uso yo, el que no esta en poo para hacerlo.

Pero bueno, no queria "plagiar" nada, si es por eso, te pongo los creditos.

Salu2

No tranquilo, eso no me preocupa. Si solo lo comentaba nada mas.

#Fdo. Physlet

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #7 en: 28 de Septiembre de 2010, 13:11:53 pm »
Hay pequeñas cosas que valen la pena modificar para ahorrarnos líneas innecesarias.

Por ejemplo, esto:

else
{
   echo 
$this->error;
}


Es lo mismo que:

else
   echo 
$this->error;


PD: Creo que los atributos de la clase se verían mejor como privados, ya que en realidad dudo que utilices dichos atributos fuera de la clase.

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #8 en: 28 de Septiembre de 2010, 14:45:25 pm »

Physlet, lo de las llaves es cuestión de cada uno. No es que sean obligatorias, pero si asi requiere mas organización,
pues mejor para el ¿No crees?.

Y sí, pienso que las variables deberían ser privadas.

#Fdo. Physlet

Desconectado gink

  • PHPer@ Fijo
  • ***
  • Mensajes: 146
  • Karma: 10
  • Sexo: Masculino
    • Ver Perfil
    • Mi blog personal
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #9 en: 28 de Septiembre de 2010, 18:08:29 pm »
Perdon por meterme, ¿Pero como funciona el POO en Php? Me tiene intrigado  :confused:
Edito: Soy un toto, no mire en el foro que estamos. ¡Perdon!
« Última modificación: 28 de Septiembre de 2010, 18:11:39 pm por gink »

Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #10 en: 28 de Septiembre de 2010, 22:59:18 pm »
Physlet, lo de las llaves es cuestión de cada uno. No es que sean obligatorias, pero si asi requiere mas organización,
pues mejor para el ¿No crees?.

Y sí, pienso que las variables deberían ser privadas.
No es que sea cuestión de cada quién, es que es más correcto. Otra cosa sería usar if: endif; en vez de if{}, eso sí depende del programador.

Desconectado Jumarras

  • PHPer@
  • **
  • Mensajes: 73
  • Karma: 3
  • Sexo: Masculino
  • Ten cerca a tus amigos, pero mas a tus enemigos
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #11 en: 30 de Septiembre de 2010, 10:27:26 am »
He hecho unos arreglillos, no funcionaba la session correctamente, no se registrabacomo tal. Este era el error: session_start; no funciona, debe ser session_start();

Salu2

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #12 en: 30 de Septiembre de 2010, 22:42:47 pm »
Hombre... esta bien sintácticamente pero no sigue el modelo de programación orientado a objetos.
Registrar y hacer login no son objetos, son acciones, y por lo tanto no tiene sentido crear una clase para cada uno.

Saludos!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado seyder120

  • PHPero Avanzado
  • ****
  • Mensajes: 372
  • Karma: -2
    • Ver Perfil
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #13 en: 01 de Octubre de 2010, 00:09:11 am »
esta muy bien hecho bonito tutorial, por cierto que tiene que ver programacion orientada a objetos con este tutorial

Desconectado danywar95

  • PHPer@
  • **
  • Mensajes: 57
  • Karma: 2
  • Sexo: Masculino
  • return 0;
    • Ver Perfil
    • HabboEx
Re:[Aporte] Sistema de Usuarios (Login+Registro)
« Respuesta #14 en: 01 de Octubre de 2010, 16:28:05 pm »
se ve muy bueno lo probare ahora y interare acer uno aver si me sale  :)
# "Las contraseñas son como la ropa interor. No puedes dejar que nadie la vea, debes cambiarla regularmente y no debes compartirla con extraños"
             --------------------------------------------------------------
# "No temo a los ordenadores; lo que temo es quedarme sin ellos"