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
<?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 = '".$this->user."'");
$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['password'] == md5($this->post_password))
{
session_start();
$_SESSION['username'] = $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['username']), clear($_POST['password']));
echo $login->check();
?>
login.html
<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
<?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 = '".$this->user."'");
$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, '".$this->fullname."', '".$this->user."', '".$this->password."', '".$this->email."', '0')");
echo $this->ok;
}
}
}
else
{
echo $this->error2;
}
}
else
{
echo $this->fields;
}
}
}
include_once "clear.php";
$reg = new register(clear($_POST['username']), clear($_POST['password']), clear($_POST['repeatpassword']), clear($_POST['email']), clear($_POST['fullname']));
echo $reg->check();
?>
register.html
<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
<?php
function clear($texto)
{
$limpio = strip_tags($texto);
$limpio = htmlspecialchars($limpio);
$limpio = stripslashes($limpio);
return $limpio;
}
?>
config.php
<?php
$error1 = 'Problem connecting to Host';
$error2 = 'Problem connecting to MySQL';
$connect = mysql_connect ('hostmysql','usuariomysql','contraseñamysql') or die($error1);
$db = mysql_select_db ('basededatos') or die($error2);
?>
Mysql
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)