Buen día,
Dado que he visto muchos mensajes de usuarios que apenas comienzan con PHP acerca de un sistema de inicio de sesión, he decidido crear una pequeña y sencilla clase que puede ser utilizada en cualquier pagina siempre y cuando maneje una base de datos
MySQL
NOTAS:
1. Esta clase fue creada en principio como apoyo a la educación así que no es la panacea ni contiene códigos complicados.
2. Esta clase fue creada para ser adaptada a cualquier base de datos siempre y cuando trabajen sobre MySQL y se tenga una tabla donde se almacene el nombre del usuario y la contraseña
2. Es muy sencilla y
NO contiene nada de seguridad (REITERO que solo la desarrolle para usuarios que apenas comienzan con PHP) y quieren tener un ejemplo o algo rápido para adaptar a sus paginas personales.
3. Sientanse libres de realizar cualquier modificación al codigo, siempre y cuando coloquen las mejoras en el hilo del tema con su respectiva explicación para que los demás usuarios puedan aprender mas.
MANOS A LA OBRA
Leer documentación dentro de codigo para mayor comprensión...
claseLogueo.php
Código PHP:
Ver originalclass loguear{
private $user, $pass;
/* PARAMETROS
*
** param $user que es una cadena de texto con el nombre del usuario registrado
** param $pass que es una cadena de texto con la contraseña del usuario registrado
*/
public function __construct($user, $pass){
$this->user = $user;
$this->pass = $pass;
}
/* PARAMETROS
*
** param $servidor es una cadena de texto con la IP o el nombre del servidor
** param $usuarioDB es una cadena de texto con el usuario para conectar a la base de datos
** param $contraseñaDB es una cadena de texto con la contraseña para conectar a la base de datos
** param $nombreBD es una cadena de texto con el nombre de la base de datos
** param $CampoTablaUser es una cadena de texto con el nombre del campo que maneja los usuarios en la tabla de la base de datos
** param $CampoTablaPass es una cadena de texto con el nombre del campo que maneja las contraseñas en la tabla de la base de datos
** param $tabla es una cadena de texto con el nombre de la tabla que maneja los usuarios registrados de tu pagina
** return $resultado que es un array con los resultados de la base de datos
*
*/
public function consultaDB($servidor, $usuarioDB, $contraseñaDB, $nombreBD, $CampoTablaUser, $CampoTablaPass, $tabla){
$consulta = "SELECT $CampoTablaUser, $CampoTablaPass FROM $tabla WHERE $CampoTablaUser = '$this->user'";
echo $consulta;
//$totalRegistros = mysql_num_rows($ejecutar);
$resultado[] = $registros[$CampoTablaUser];
$resultado[] = $registros[$CampoTablaPass];
}
return $resultado;
}
/* PARAMETROS
*
** param $arrayResultadoConsultaDB es un array con los resultados del metodo anterior
** return $retorno que es un boleano (TRUE o FALSE)
*/
public function verificar($arrayResultadoConsultaDB){
if(empty($arrayResultadoConsultaDB[0]) || empty($arrayResultadoConsultaDB[1]) || $$arrayResultadoConsultaDB[0] != $this->user || $$arrayResultadoConsultaDB[1] != $this->pass){ $retorno = FALSE;
return $retorno;
}else{
$_SESSION['logueado'] = TRUE;
$_SESSION['usuario'] = $$arrayResultadoConsultaDB[0];
$_SESSION['contrasena'] = $$arrayResultadoConsultaDB[1];
$retorno = TRUE;
return $retorno;
}
}
/* PARAMETROS
*
** param $tipo es un boleano (1-0) el cero quiere decir que se quiere mostrar un mensaje, el 1 quiere decir que queremos hacer una redireccion a otra pagina
** param $msgRedir es una cadena de texto con el mensaje o la ruta a la pagina que se quiere redirigir
*/
public function accion($tipo, $msgRedir){
switch($tipo){
case 0:
echo "$msgRedir";
break;
case 1:
break;
}
}
}
?>
ejemploUso.php
Código PHP:
Ver original<?php
include("claseLogueo.php");
/* OBTENIENDO DATOS DE FORMULARIO */
$usuarioFORM = $_POST['usuario']; // cambiar USUARIO por el nombre del campo del formulario donde se escribe el usuario
$contrasenaFORM = $_POST['contrasena']; // cambiar CONTRASENA por el nombre del campo del formulario donde se escribe la contraseña
/* INFORMACION DE LA BASE DE DATOS */
$servidor = 'localhost'; // servidor de la base de datos
$usuarioBD = 'root'; // usuario para ingresar a la base de datos
$contraseñaDB = '123456'; // contraseña para ingresar a la base de datos
$nombreDB = 'pruebas'; // nombre de la base de datos
$tabla = 'registro'; // tabla donde se almacenan los usuarios
$campoTablaUser = 'registro_NombreUsuario'; // nombre de la columna donde se almacena el nombre de usuario
$CampoTablaPass = 'registro_NombreContrasena'; // nombre de la columna donde se almacena la contraseña de usuario
// COMENZAMOS CON LA CLASE
$clase = new loguear($usuarioFORM, $contrasenaFORM);
$consultando = $clase->consultaDB($servidor, $usuarioBD, $contraseñaDB, $nombreDB, $campoTablaUser, $CampoTablaPass, $tabla);
$estado = $clase->verificar($consultando);
// verificamos el resultado del metodo para saber si todo es OK o si no es usuario registrado
if($estado === FALSE){
echo "El campo usuario y contraseña no coinciden o NO existes en nuestra base de datos";
}else{
//$mensaje = "Bienvenido, ahora estas logueado";
$redireccionar = 'unaPagina.php';
$clase->accion(0, $redireccionar);
}
?>
Espero que esto le de un punto de partida a los usuarios que están empezando con PHP y a los usuarios que estén comenzando con la POO como yo.
Cualquier comentario (constructivo) o mejora al codigo sera bienvenido.