
Conexion.class.php
Código:
Login.class.php<?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; } } ?>
Código:
Yo la aplique de la se siguiente manera<?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='$usuario' AND password='$password'"; } elseif ($tipo_usuario == "Empleado") { $query = "SELECT id_empleado,password,nivel,status FROM empleados WHERE id_empleado='$usuario' AND password='$password'"; } 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('autentificado'); 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"); } } ?>
index.php
Código:
index1.php<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>
Código:
Proteccion de las pagina por niveles<?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 == 1 && $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 == 2 && $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 == 0 && $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"); } ?>
administrador.php
Código:
docente.php<?php include("clases/Cargar_clases.php"); $login=new Login(); $login->proteger_administrador(); $login->cerrar_sesion_inactiva(); ?>
Código:
alumno.php<?php include("clases/Cargar_clases.php"); $login=new Login(); $login->proteger_docente(); $login->cerrar_sesion_inactiva(); ?>
Código:
BD<?php include("clases/Cargar_clases.php"); $login=new Login(); $login->proteger_alumno(); $login->cerrar_sesion_inactiva(); ?>
Código PHP:
CREATE TABLE `alumnos` (
`id_alumno` varchar(15) NOT NULL,
`nombre` varchar(30) NOT NULL,
`status`int(1) NOT NULL,
`password` varchar(10) NOT NULL,
PRIMARY KEY (`id_alumno`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `empleados` (
`id_empleado` varchar(15) NOT NULL,
`nombre` varchar(30) NOT NULL,
`status`int(1) NOT NULL,
`password` varchar(10) NOT NULL,
`nivel` varchar(15) NOT NULL,
PRIMARY KEY (`id_empleado`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;