acá el invento que hice
,
Código PHP:
Ver original<?php
/**
*
* clase para gestionar Usuarios
* @author Carlos Belisario <carlosbelisario.com>
* @version 1.0
*
*/
class Usuarios
{
/**
*
* @var String $usuario
*/
private $usuario;
/**
*
* @var String $password
*/
private $password;
/**
*
* @var String $rol
*/
private $rol;
/**
*
* @var String $estatus
*/
private $estatus;
/**
*
* @var String $securitySalt
*/
private $securitySalt;
/**
*
* @var PDO
*/
private $db;
/**
*
* @var String $error
*/
private $error;
/**
*
* @param PDO $db
*/
public function __construct(PDO $db)
{
$this->db = $db;
}
/**
*
* Getter and Setter
*/
public function getUsuario()
{
return $this->usuario;
}
public function setUsuario($usuario)
{
$this->usuario = $usuario;
}
public function getPassword()
{
return $this->password;
}
public function setPassword($password, $salt = true)
{
if($salt)
$this->password = md5($this->getUsuario().$password.$this->getSecuritySalt()); else
$this->password = md5($this->getUsuario().$password); }
public function getSecuritySalt()
{
return $this->securitySalt;
}
public function setSecuritySalt($securitySalt = 'heyntonwgrnkmoamju33mdowm')
{
$this->securitySalt = $securitySalt;
}
public function getRol()
{
return $this->rol;
}
public function setRol($rol)
{
$this->rol = $rol;
}
public function getEstatus()
{
return $this->estatus;
}
public function setEstatus($estatus)
{
$this->estatus = $estatus;
}
public function getError()
{
return $this->error;
}
public function setError($k, $error)
{
$this->error[$k] = $error;
}
/**
*
* @method login
* metodo para autnetificar al usuario
*
*/
public function login()
{
// aca verificamos que el usuario haya escrito en un formato que comience con letras y pueda estar seguido de un punto, guion bajo o guion
if(preg_match("/(^[a-z]{1,20})(?!\s)([\w-\.]{0,20}$)/i", $this->getUsuario())){ $sql = "SELECT * FROM usuarios WHERE usuario = :usuario AND password = :password";
try {
// hacemos la consulta
$query = $this->db->prepare($sql);
$query->bindParam(':usuario', $this->getUsuario());
$query->bindParam(':password', $this->getPassword());
$query->execute();
$row = $query->fetchObject();
//verificamos que el usuario exista en la base de datos y la password sea correcta
$this->setRol($row->rol);
/*podemos pasar el estatus para que se haga la verificacion
* e ingrese a una pagina para usuarios deshabilitados,
* para darle motivos e incluso donde comunicarse,
*
*/
$this->setEstatus($row->estatus);
/* o podemos incluirlo en los errores, de manera que no haga login
if($row->estatus == "habilitado") {
$this->setRol($row->rol);
} else {
$this->setError ('userEstatus', 'El Usuario no esta habilitado');
}*/
} else {
$this->setError('errorLogin', 'El Usuario o la Contraseña no es Correcta');
}
} catch( PDOException $e) {
$e->getMessage();
}
} else {
$this->setError('erroFormato', 'Formato de usuario no permitido');
}
}
}
/**
* como usar
*/
try {
//establecemos la conexion con PDO
$db = new PDO('mysql:host=localhost; dbname=prueba', 'root', '123');
} catch(PDOException $e) {
echo $e->getMessage();
}
//instanciamos la clase y probamos el login
$class = new Usuarios($db);
//los parámetros estan siendo pasado un login por defecto se puede obtener desde un formulario con $_POST O $_GET
$class->setUsuario('carlos');
$class->setPassword('123456');
//indicamos que realice el login
$class->login();
//sino existe algn error
if(count($class->getError()) == 0) { //realizamos los procesos con las variables de session o incluso si se desea se puede crear un componente de session y le pasamos nuestro objeto usuario con el login correcto
} else {
// gestionamos los mensajes de errores para los usuarios
echo "<pre>";
echo "</pre>";
}
?>
es mas como dijo
gildus una gestión de usuarios ya que el login es solo una accion que realizan los mismo, no hice la vista solo la lógica del login, todavía me falta crear la gestión de lo que es el CRUD, pero lo hice ahorita porque tenía un tiempo libre, espero que les pueda servir y que las critiquen, si hay dudas, me dicen o mejoras mucho mejor, por cierto por fin me cree una cuenta pública de github
pueden descargar directamente de alla si quieren para hacer mejoras como lo deseen, eso si me las indican para ver yo también y aprender, saludos
https://github.com/carlosbelisario/juegos_con_clases/