VeneHosting.com :: Tu Hosting en Venezuela

Autor Tema: Clase para login  (Leído 958 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado negro1985

  • Novato
  • *
  • Mensajes: 46
  • Puntuación: 0
    • Ver Perfil
Clase para login
« : 12 de junio de 2010, 02:19:40 am »
Hola a todos, el dia de ayer me propuse hacer una clase para logueo, ya que en el proyecto que voy a realizar se requiere un autentificacion de diferentes tipos de usuarios, le di vueltas y hoy la termine, para quien quiera aplicarla la dejo, se aceptan criticas y comentarios:si:

Conexion.class.php
Código: [Seleccionar]
<?php
class Conexion
{
    private 
$cn;
    private 
$rs;
    private 
$servidor;
    private 
$usuario;
    private 
$password;
    private 
$bd;

    public function 
__construct($servidor "localhost"$usuario "root"$password =
        
"220785"$bd "sce")
    {
        
$this->servidor $servidor;
        
$this->usuario $usuario;
        
$this->password $password;
        
$this->bd $bd;
        
$this->cn = new mysqli($servidor$usuario$password$bd);
    }
    public function 
dbExecute($query)
    {
        
$this->rs $this->cn->query($query);
        return 
$this->rs;
    }
    public function 
getInsertedId()
    {
        return 
$this->cn->insert_id;
    }
    public function 
afectados()
    {
        return 
$this->cn->affected_rows;
    }
    protected function 
clean($value)
    {
        if (
get_magic_quotes_gpc()) {
            
$value stripslashes($value);
        }
        
$value mysql_real_escape_string(htmlspecialchars($value));
        return 
$value;
    }
    public function 
__destruct()
    {
        
$this->cn;
    }
}
?>


Login.class.php

Código: [Seleccionar]
<?php
class Login extends Conexion
{
    private 
$usuario;
    private 
$password;
    private 
$tipo_usuario;
    private 
$nivel;

    public function 
__construct()
    {
        
parent::__construct();
        
parent::__destruct();
    }
    public function 
comprueba($usuario$password$tipo_usuario)
    {
        
$this->usuario $this->clean($usuario);
        
$this->password $this->clean($password);
        
$this->tipo_usuario $tipo_usuario;
        
//Comprueba el tipo de usuario
        
if ($tipo_usuario == "Alumno") {
            
$query "SELECT id_alumno,password,status FROM alumnos WHERE id_alumno=&#39;$usuario&#39; AND password=&#39;$password&#39;";
        } elseif (
$tipo_usuario == "Empleado") {
            
$query "SELECT id_empleado,password,nivel,status FROM empleados WHERE id_empleado=&#39;$usuario&#39; AND password=&#39;$password&#39;";
        }
        return 
$this->dbExecute($query);//Devuelve resultado de consulta
    
}
    public function 
crear_sesion($tipo_usuario$nivel$usuario)
    {
        
$this->tipo_usuario $tipo_usuario;
        
$this->nivel $nivel;
        
$this->usuario $usuario;
        
session_start();
        if (
$tipo_usuario == "Alumno" && $nivel==0) {//Usuario alumno
            
session_register("autentificado");
            
$_SESSION["autentificado"] = "ALUMNO";//Variable de sesion que restringe el acceso
            
$_SESSION["alumno"] = $usuario;//Variable de sesion con el usuario 
            
$_SESSION["acceso"] = date("Y-n-j H:i:s");//Variable de sesion del tiempo de inicio
        
} elseif ($tipo_usuario == "Empleado" && $nivel == 1) {//Verifica el empleado y su puesto, depende del nivel que se le de puede ser 1,2,3 ó los niveles que se quieran manejar
            
session_register("autentificado");
            
$_SESSION["autentificado"] = "ADMINISTRADOR";
            
$_SESSION["administrador"] = $usuario;
            
$_SESSION["acceso"] = date("Y-n-j H:i:s");
        } elseif (
$tipo_usuario == "Empleado" && $nivel == 2) {
            
session_register("autentificado");
            
$_SESSION["autentificado"] = "DOCENTE";
            
$_SESSION["docente"] = $usuario;
            
$_SESSION["acceso"] = date("Y-n-j H:i:s");
        }
    }
    private function 
imprime($tipo_usuario$nivel)//Imprime las variable de sesion del usuario
    
{
        
$this->tipo_usuario $tipo_usuario;
        
$this->nivel $nivel;
        
session_start();
        
session_register(&#39;autentificado&#39;);
        
if ($tipo_usuario == "Alumno" && $nivel==0) {
            
$sesion $_SESSION["alumno"];
            return 
$sesion;
        } elseif (
$tipo_usuario == "Empleado" && $nivel == 1) {
            
$sesion $_SESSION["administrador"];
            return 
$sesion;
        } elseif (
$tipo_usuario == "Empleado" && $nivel == 2) {
            
$sesion $_SESSION["docente"];
            return 
$sesion;
        }
    }
    public function 
proteger_administrador()//Protege la parte del administrador
    
{        
        
session_start();
        if (
$_SESSION["autentificado"] == "ADMINISTRADOR") {//Verifica que la sesion este creada
            
return $this->imprime("Empleado"1);            
        } else {
            
header("Location: index.php");
        }
    }
    public function 
proteger_docente()//Protege la parte del docente
    
{
        
session_start();
        if (
$_SESSION["autentificado"] == "DOCENTE") {
            return 
$this->imprime("Empleado"2);//Imprime las variables de sesion
        
} else {
            
header("Location: index.php");
        }
    }
    public function 
proteger_alumno()//Protege la parte del docente
    
{
        
session_start();
        if (
$_SESSION["autentificado"] == "ALUMNO") {
            return 
$this->imprime("alumno"0);//Imprime las variables de sesion
        
} else {
            
header("Location: index.php");
        }
    }
    public function 
cerrar_sesion_inactiva()//Cierra la sesion si el usuario esta inactivo
    
{
        
$fechaGuardada $_SESSION["acceso"];//Variable de sesion del tiempo transcurrido
        
$ahora date("Y-n-j H:i:s");//Variable que captura el tiempo actual
        
$tiempo_transcurrido = (strtotime($ahora) - strtotime($fechaGuardada));//Se compara el ultimo tiempo de la sesion del tiempo y la compara con la variable del tiempo transcurrido
        
if ($tiempo_transcurrido 900) {//Tiempo de vida de la sesion
            
session_destroy();
        } else {
            
$_SESSION["acceso"] = $ahora;//Refresca la variable de sesion del tiempo
        
}
    }
    public function 
cerrar_session()//Cierra la sesion
    
{
        
session_start();
        
$_SESSION = array();
        
session_destroy();
        
header("Location: index.php");
    }
}
?>


Yo la aplique de la se siguiente manera

index.php
Código: [Seleccionar]
<form name="forma" method="post" action="index1.php">
<table>
<tr>
<td class="titulos">Tipo de Usuario</td>
<td>
<select name="tipo_usuario" style="width: auto;">
<option value="1">Selecciona</option>
<option value="Empleado">Empleado</option>
<option value="Alumno">Alumno</option>
</select>
</td>
</tr>
<tr>
<td class="titulos">Usuario</td>
<td><input type="text" name="usuario" id="usuario" maxlength="15" size="15" /></td>
</tr>
<tr>
<td class="titulos">Password</td>
<td><input type="password" name="password" id="password" maxlength="10" size="10" /></td>
</tr>
<tr class="titulos">
<td colspan="2"><input type="submit" name="Entrar"  value="Entrar" class="btn btnadmin" /></td>
</tr>
</table>
</form>

index1.php
Código: [Seleccionar]
<?php
include ("clases/Cargar_clases.php");

$tipo_usuario $_POST["tipo_usuario"];
$usuario $_POST["usuario"];
$password $_POST["password"];

$login = new Login();
$rs $login->comprueba($usuario$password$tipo_usuario);
$row $rs->fetch_assoc();

if (
$tipo_usuario == "Empleado") {
    
$usuario1 $row["id_empleado"];
    
$password1 $row["password"];
    
$nivel $row["nivel"];
    
$status=$row["status"];
    if (
$usuario == $usuario1 && $password == $password1 && $nivel == && $status==1) {//Verifica que el usuario sea el administrador
        
$login->crear_sesion($tipo_usuario$nivel$usuario);
        
header("Location: administrador.php");
    } elseif (
$usuario == $usuario1 && $password == $password1 && $nivel == && $status==1) {//verifica que el usuario sea el docente
        
$login->crear_sesion($tipo_usuario$nivel$usuario);
        
header("Location: docente.php");
    } else {
        
header("Location: index.php");
    }
}elseif(
$tipo_usuario=="Alumno"){
    
$usuario1 $row["id_alumno"];
    
$password1 $row["password"];
    
$nivel 0;
    
$status=$row["status"];
    if (
$usuario == $usuario1 && $password == $password1 && $nivel == && $status==1) {//Verifica que el usuario sea el alumno
        
$login->crear_sesion($tipo_usuario$nivel$usuario);
        
header("Location: alumno.php");
    } else {
        
header("Location: index.php");
    }
} else {
    
header("Location: index.php");
}
?>


Proteccion de las pagina por niveles

administrador.php
Código: [Seleccionar]
<?php
include("clases/Cargar_clases.php");
$login=new Login();
$login->proteger_administrador();
$login->cerrar_sesion_inactiva();
?>


docente.php
Código: [Seleccionar]
<?php
include("clases/Cargar_clases.php");
$login=new Login();
$login->proteger_docente();
$login->cerrar_sesion_inactiva();
?>


alumno.php
Código: [Seleccionar]
<?php
include("clases/Cargar_clases.php");
$login=new Login();
$login->proteger_alumno();
$login->cerrar_sesion_inactiva();
?>


Espero que alguien le sirva

Desconectado alicebermudez

  • Novato
  • *
  • Mensajes: 4
  • Puntuación: 0
    • Ver Perfil
Re:Clase para login
« Respuesta #1 : 23 de febrero de 2011, 06:59:03 pm »
 :( hola yo estoy en lo mismo creando un sistema de usuarios y me estoy guiando del tuyo, pero al tratar de ingresar me pide un archivo llamado cargar_clases.php,  :-[disculpa mi ignorancia, pero cual es ese archivo? de verdad no se nada estoy es iniciando. :-\

PHP de Venezuela

Re:Clase para login
« Respuesta #1 : 23 de febrero de 2011, 06:59:03 pm »

 

PHP de Venezuela on Facebook