Autor Tema: Clase de usuarios [POO]  (Leído 3199 veces)

Desconectado iStocker

  • PHPer@ Fijo
  • ***
  • Mensajes: 104
  • Karma: 6
  • ~ єssєитιαʟ ~
    • Ver Perfil
Clase de usuarios [POO]
« en: 17 de Marzo de 2013, 23:19:56 pm »
Hola & bienvenidos a éste tópico donde les compartiré una clase que hice para un pequeño sistema de administración, éste lo he hecho yo desde el inicio hasta su fin, con la ayuda de SofoEB (Bryan Suero) al cual le agradezco su ayuda infinitamente.

Ahora, el sistema puede ser adaptado según sus necesidades, si no lo quieren editar tendrán que crear un primer archivo llamado MySQL.php, que aquí es donde se construye la conexión a la base de datos SQL usando la librería de MySQLi, desarrollado en POO. Seguido del código de MySQL.php les dejaré el de MySQL.Users.php.

Para usar la clase necesitan crear un archivo donde se cargue la configuración (que llamaré Config.php) & la clase, les dejaré un ejemplo al final, se llamará Init.php. El archivo Init.php (en mi caso) será un archivo global, que se incluirá en cada archivo que requiera funciones & la conexión MySQL o algo sobre la configuración.

MySQL.php

[spoiler]
Código: (php) [Seleccionar]
<?php
Class MySQL
{
public static $c;
public static $result = ['error'=>false'type'=>'Desconocido''description'=>'Respuesta desconocida.'];

public static function Connect($Data)
{
self::$c = new mysqli($Data['hostname'], $Data['username'], $Data['password'], $Data['database'], $Data['port']);
}
}
?>
[/spoiler]

MySQL.Users.php
[spoiler]
Código: (php) [Seleccionar]
<?php
/**
* @author  iStocker [---] con ayuda de SofoEB [Bryan Suero].
* @package   Módulo de Clase POO [MDP]
* @category  Usuarios 
* @version  0.0.1
* @copyright No hay ningún copyright, éste contenido puede ser editado a gusto & publicado siempre & cuando se conserver los créditos de autor.
**/

class Users extends MySQL
{
public static function newUser($username$email$password)
{
if(isset($username$email$password))
{
$query parent::$c->query("SELECT id FROM users WHERE username = '".$username."' OR email = '".$email."'");
if($query->num_rows)
{
return parent::$result = ['error'=>true'type'=>'Nuevo usuario''description'=>'¡El nombre de usuario o e-mail ya están asociados a una cuenta existente!'];
$query->free();
$query->close();
}
else
{
$query parent::$c->query("INSERT INTO users(username, email, password) VALUES ('".$username."', '".$email."', '".md5($password)."')");
return parent::$result = ['type'=>'Nuevo usuario''description'=>'¡Felicidades, el registro se ha hecho correctamente!'];
$query->free();
$query->close();
}
}
else
{
return parent::$result = ['error'=>true'type'=>'Nuevo usuario''description'=>'¡Todos los campos son obligatorios!'];
}
}

public static function UpdateUser($id$data)
{
if(isset($id$data))
{
foreach($data as $k => $v)
{
$query parent::$c->query("UPDATE users SET $k = '$v' WHERE id = '$id'");
}
if($query)
{
return parent::$result = ['type'=>'Actualizar usuario''description'=>'¡La actualización se ha hecho con éxito!'];
}
else
{
return parent::$result = ['error'=>true'type'=>'Actualizar usuario''description'=>'¡La actualización no se ha podido realizar!'];
}
$query->free();
$query->close();
}
else
{
return parent::$result = ['error'=>true'type'=>'Actualizar usuario''description'=>'¡Debes de rellenar todos los campos!'];
}
}

public static function DeleteUser($id)
{
if(isset($id))
{
$query parent::$c->query("DELETE FROM users WHERE id = '".$id."'");
if($query->num_rows)
{
return parent::$result = ['error'=>true'type'=>'Borrar usuario''description'=>'¡Se ha borrado el usuario con éxito!'];
}
else
{
return parent::$result = ['error'=>true'type'=>'Borrar usuario''description'=>'¡El usuario no existe!'];
}
$query->free();
$query->close();
}
else
{
return parent::$result = ['error'=>true'type'=>'Borrar usuario''description'=>'¡Debes de proporcionar toda la información necesaria!'];
}
}

public static function UserLogin($ue$password)
{
if(isset($ue$password))
{
$query parent::$c->query("SELECT * FROM users WHERE (username = '".$ue."' OR email = '".$ue."') AND password = '".md5($password)."'");
if($query->num_rows)
{
$userinfo $query->fetch_row();
$_SESSION['login'] = true;
$_SESSION['id'] = $userinfo[0];
$_SESSION['username'] = $userinfo[1];
$_SESSION['email'] = $userinfo[2];
$_SESSION['rank'] = $userinfo[4];

return parent::$result = ['type'=>'Login usuario''description'=>'¡Bienvenido al sistema!'];
}
else
{
return parent::$result = ['error'=>true'type'=>'Login usuario''description'=>'¡Al parecer el nombre de usuario/e-mail no coinciden con la contraseña!'];
}
$query->free();
$query->close();
}
else
{
return parent::$result = ['error'=>true'type'=>'Login usuario''description'=>'¡Todos los campos son obligatorios!'];
}
}


public static function SelectUsers($type$where null)
{
if(isset($type))
{
$query parent::$c->query("SELECT ".$type." FROM users ".$where);
if($query->num_rows)
{
$i 0;
while($row $query->fetch_row())
{
$users[$i++] = $row;
}
return $users;
$query->free();
$query->close();
}
else
{
return parent::$result = ['error'=>true'type'=>'Usuarios''description'=>'¡El usuario no existe!'];
}
}
else
{
return parent::$result = ['error'=>true'type'=>'Usuarios''description'=>'¡Debes de proporcionar toda la información necesaria!'];
}
}
}
?>
[/spoiler]

Init.php
[spoiler]
Código: (php) [Seleccionar]
<?php
# Iniciamos las sesiones
session_start();

# Incluímos archivos vitales para el funcionamiento.
include 'Config.php';
include 
'MySQL.php';
include 
'MySQL.Users.php';

# Inicio de clases & estancias esenciales para el sistema.
MySQL::Connect($Config['MySQL']);
?>
[/spoiler]

Config.php
[spoiler]
Código: (php) [Seleccionar]
<?php
<?php
# Datos de conexión a la base de datos
$Config['MySQL'] = 
[
'hostname' =>  '127.0.0.1', /* URL de enlace MySQL (localhost/121.0.0.1)*/
'username' =>  'root', /* Nombre de usuario (root) */
'password' =>  '---', /* Contraseña de usuario */
'database' =>  '---', /* Nombre de la base de datos */
'port'     =>  3306, /* Puerto de conexión (3306)*/
];

?>
[/spoiler]

Por el momento no les dejaré toda la documentación debido a falta de tiempo, así que tendrán que ir deduciendo su uso ustedes sólos, les dejaré las clases más complicadas para su uso.

Clase UpdateUser($id = int, $data = array)
Atributos
  • $id ~ Es la id del usuario a editar.
  • $data ~ es la información a editar, es un array.
Ejemplo de uso
[spoiler]
Código: (php) [Seleccionar]
<?php
if(isset($_POST['update']))
{
if ($_POST['username']) { $data['username']=$_POST['username']; }
if ($_POST['email']) { $data['email']=$_POST['email']; }
if ($_POST['password']) { $data['password']=md5($_POST['password']); }
if ($_POST['rank']) { $data['rank']=$_POST['rank']; }

if(is_array($data))
{
Users::UpdateUser($_POST['id'], $data);
$result Users::$result;

if($result['error'])
{
?>
<h1 style="font-color:red;">Error</1><br><b>Tipo</b> <?=$result['type'];?><br><b>Descripción</b> <?=$result['description'];?><br><?php
}
else
{
?>
<h1 style="font-color:green;">¡YEY!</1><br><b>Descripción</b> <?=$result['description'];?><br><?php
}
}
}
?>
[/spoiler]

Ésta clase no incluye mi sistema de rangos & permisos, además de que es una versión desactualizada.
« Última modificación: 26 de Agosto de 2013, 01:06:57 am por iStocker »
¡FUUU!


Cita de: Mary Shaw
Menos del 10% del código tienen que ver directamente con el propósito del sistema; el resto tiene que ver con la entrada y salida, validación de datos, mantenimiento de estructuras de datos y otras labores domésticas



[/cent

Comunidad PHPeros

Clase de usuarios [POO]
« en: 17 de Marzo de 2013, 23:19:56 pm »