error_reporting(E_ALL); /** * * clase para gestionar Usuarios * @author Carlos Belisariohasta ahora llevo realizado esto, sin la gestión de lo que es el CRUD de la gestión de usuarios, sin embargo cuando vaya teniendo tiempo lo iré actualizando, el proyecto lo pueden descargar desde https://github.com/carlosbelisario/juegos_con_clases/ espero que sea de utilidad* @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 if(!empty($row)) { $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 " "; print_r($class->getError()); echo ""; }
Blog para el aprendizaje de las tecnologías usadas para el desarrollo Web (PHP,MySQL,HTML,JAVASCRIPT) y algo mas
domingo, 22 de enero de 2012
Clase para gestión de Usuario
En una Discusión que se formo en un aporte que hizo un compañero de forosdelweb, donde di algunas sugerencias al usuario que lo inicio, quede de hacer una pequeña clase para también aportar al tema en cuestión, y hasta ahora la clase es la siguiente
Suscribirse a:
Enviar comentarios (Atom)
La clase esta siendo mejorada en mi cuenta en github, que es donde le estoy dando seguimiento a la misma, actualmente he estado separando responsabilidades, se creo una inferface para poder tener acceso tanto de una base de datos basada en SQL como de otro tipo de contenedor de datos, todavía esta en desarrollo, pero ha ido mejorandose, saludos espero que si la revisan les sea util
ResponderEliminarQue tal Carlos, cómo estás? ;-)
ResponderEliminarCambia la clase Usuarios por Usuario, una clase en POO es siempre en singular. Ve que resuelves muchas responsabilidades en la misma clase, piensa en abrir el diseño entre varias clases (veo en tus comentarios que lo estás haciendo).
Saludos!
gracias por el comentario amigo Enrique Place, es una mala maña que tengo de colocar el nombre de las clases en plural, pero voy a ver si intento seguir mejor las convenciones, tienes mucha razón en lo que indicas, le di muchas responsabilidades a esta clase, pero luego la separe en lo que subi a github https://github.com/carlosbelisario/juegos_con_clases/tree/master/User, no esta terminado porque me han salido algunas cosas por hacer, pero creo que esta mejor y la lleve al ingles (aunque no es mi fuerte) para estandarizar como he leído en muchas artículos de como compartir códigos, espero que puedas verla y darme tu opinión, saludos y gracias por el comentario
ResponderEliminar