Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/01/2012, 13:44
Avatar de jotaincubus
jotaincubus
 
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 7 meses
Puntos: 394
[APORTE] Clase inicio sesion para cualquier pagina con mysql

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 original
  1. class loguear{
  2.  
  3. private $user, $pass;
  4.  
  5.     /* PARAMETROS
  6.     *
  7.     ** param $user que es una cadena de texto con el nombre del usuario registrado
  8.     ** param $pass que es una cadena de texto con la contraseña del usuario registrado
  9.     */
  10.     public function __construct($user, $pass){
  11.         $this->user = $user;
  12.         $this->pass = $pass;
  13.     }
  14.    
  15.     /* PARAMETROS
  16.     *
  17.     ** param $servidor es una cadena de texto con la IP o el nombre del servidor
  18.     ** param $usuarioDB es una cadena de texto con el usuario para conectar a la base de datos
  19.     ** param $contraseñaDB es una cadena de texto con la contraseña para conectar a la base de datos
  20.     ** param $nombreBD  es una cadena de texto con el nombre de la base de datos
  21.     ** param $CampoTablaUser  es una cadena de texto con el nombre del campo que maneja los usuarios en la tabla de la base de datos
  22.     ** 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
  23.     ** param $tabla es una cadena de texto con el nombre de la tabla que maneja los usuarios registrados de tu pagina
  24.     ** return $resultado que es un array con los resultados de la base de datos
  25.     *
  26.     */
  27.     public function consultaDB($servidor, $usuarioDB, $contraseñaDB, $nombreBD, $CampoTablaUser, $CampoTablaPass, $tabla){
  28.         $conexion = mysql_connect($servidor, $usuarioDB, $contraseñaDB);
  29.         mysql_select_db($nombreBD, $conexion);
  30.         $consulta = "SELECT $CampoTablaUser, $CampoTablaPass FROM $tabla WHERE $CampoTablaUser = '$this->user'";
  31.         echo $consulta;
  32.         $ejecutar = mysql_query($consulta, $this->conexion);
  33.         //$totalRegistros = mysql_num_rows($ejecutar);
  34.        
  35.         while($registros = mysql_fetch_array($ejecutar)){
  36.             $resultado[] = $registros[$CampoTablaUser];
  37.             $resultado[] = $registros[$CampoTablaPass];
  38.         }
  39.         return $resultado;
  40.     }
  41.    
  42.     /* PARAMETROS
  43.     *
  44.     ** param $arrayResultadoConsultaDB es un array con los resultados del metodo anterior
  45.     ** return $retorno que es un boleano (TRUE o FALSE)
  46.     */
  47.     public function verificar($arrayResultadoConsultaDB){
  48.         if(empty($arrayResultadoConsultaDB[0]) || empty($arrayResultadoConsultaDB[1]) || $$arrayResultadoConsultaDB[0] != $this->user || $$arrayResultadoConsultaDB[1] != $this->pass){
  49.             $retorno = FALSE;
  50.             return $retorno;
  51.         }else{
  52.             $_SESSION['logueado'] = TRUE;
  53.             $_SESSION['usuario'] = $$arrayResultadoConsultaDB[0];
  54.             $_SESSION['contrasena'] = $$arrayResultadoConsultaDB[1];
  55.             $retorno = TRUE;
  56.             return $retorno;
  57.         }
  58.     }
  59.    
  60.     /* PARAMETROS
  61.     *
  62.     ** 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
  63.     ** param $msgRedir es una cadena de texto con el mensaje o la ruta a la pagina que se quiere redirigir
  64.     */
  65.     public function accion($tipo, $msgRedir){
  66.         switch($tipo){
  67.             case 0:
  68.                 echo "$msgRedir";
  69.             break;
  70.             case 1:
  71.                 header("Location:$msgRedir");
  72.             break;
  73.         }
  74.     }
  75. }
  76. ?>

ejemploUso.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. include("claseLogueo.php");
  4.  
  5. /* OBTENIENDO DATOS DE FORMULARIO */
  6. $usuarioFORM = $_POST['usuario']; // cambiar USUARIO por el nombre del campo del formulario donde se escribe el usuario
  7. $contrasenaFORM = $_POST['contrasena']; // cambiar CONTRASENA por el nombre del campo del formulario donde se escribe la contraseña
  8.  
  9. /* INFORMACION DE LA BASE DE DATOS */
  10. $servidor = 'localhost'; // servidor de la base de datos
  11. $usuarioBD = 'root'; // usuario para ingresar a la base de datos
  12. $contraseñaDB = '123456'; // contraseña para ingresar a la base de datos
  13. $nombreDB = 'pruebas'; // nombre de la base de datos
  14. $tabla = 'registro'; // tabla donde se almacenan los usuarios
  15. $campoTablaUser = 'registro_NombreUsuario'; // nombre de la columna donde se almacena el nombre de usuario
  16. $CampoTablaPass = 'registro_NombreContrasena'; // nombre de la columna donde se almacena la contraseña de usuario
  17.  
  18. // COMENZAMOS CON LA CLASE
  19. $clase = new loguear($usuarioFORM, $contrasenaFORM);
  20. $consultando = $clase->consultaDB($servidor, $usuarioBD, $contraseñaDB, $nombreDB, $campoTablaUser, $CampoTablaPass, $tabla);
  21. $estado = $clase->verificar($consultando);
  22.  
  23. // verificamos el resultado del metodo para saber si todo es OK o si no es usuario registrado
  24. if($estado === FALSE){
  25.     echo "El campo usuario y contraseña no coinciden o NO existes en nuestra base de datos";
  26. }else{
  27.     //$mensaje = "Bienvenido, ahora estas logueado";
  28.     $redireccionar = 'unaPagina.php';
  29.     $clase->accion(0, $redireccionar);
  30. }
  31. ?>

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.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 20/01/2012 a las 13:54