Я иду немного работая в этом коде и не смог решать ситуацию, оно я функционирует, когда я это тестирую в localhost, но во время пересылания этого в 1&1 кажется мне ошибкой в, который говорит мне одновременно, что я не имею доступа к системе, и потом посылает мне сообщение благополучного прибытия пользователю перед тем, как пересылать index и не позволяет мне соглашаться на модули программы.
<?php
class ModeloConect
{
private $servidor = 'xxx'
private $usuario = 'xxx';
private $clave = 'xxx';
private $bd = 'xxx';
protected $laRow = array();
private $con;
private $res;
protected function conectar()
{
$this->con=mysqli_connect($this->servidor,$this->usuario,$this->clave);
mysqli_select_db($this->con, $this->bd);
}
protected function desconectar()
{
mysqli_close($this->con);
}
//FUNCION PROTEGIDA FILTRO DE BUSQUEDA
protected function filtro($sql)
{
$lrTb=mysqli_query($this->con, $sql) OR die(mysqli_error($this->con));
return $lrTb;
}
//FUNCION PROTEGIDA CIERRAFILTRO DE BUSQUEDA
protected function cierrafiltro($result)
{
mysqli_free_result($result);
}
protected function ejecutar($sql)
{
$this->res=mysqli_query($this->con, $sql) or die(mysqli_error($this->con));
if (mysqli_affected_rows($this->con)==0)
return false;
return true;
}
//FUNCION PROXIMO PARA RECORRER result PROXIMA POSICION DEL ARRAY
protected function proximo($result)
{
$laRow=mysqli_fetch_array($result);
return $laRow;
}
//FUNCION PROTEGIDA NUMERO DE REGISTROS PARA SABER LA CANTIDAD DE REGISTROS EXISTENTES
protected function num_registros($result)
{
$lnRegistros=mysqli_num_rows($result);
return $lnRegistros;
}
//FUNCION BEGIN
protected function begin()
{
mysqli_query($this->con, "BEGIN");
}
//FUNCION COMMIT
protected function commit()
{
mysqli_query($this->con, "COMMIT");
}
//FUNCION ROLLBACK
protected function rollback()
{
mysqli_query($this->con, "ROLLBACK");
}
protected function formato_fecha($pcFecha)
{
$lcNow=date("Y-m-d");
if (strlen($pcFecha)==10)
{
$lcDia=substr($pcFecha,0,2);
$lcMes=substr($pcFecha,3,2);
$lcAno=substr($pcFecha,6,4);
$lcNow=$lcAno."-".$lcMes."-".$lcDia;
}
return $lcNow;
}
}
?>
Это модуль общей связности, которая функционирует как основа системы для связей с базой данных.
Потом модуль контроля доступа оказывается таким:
<?php
session_start();//inicia la session, la cual permite trabajar con la variable $_SESSION
require_once('../clases/clase_usuario.php');//Trae el archivo clase_usuario.php para instanciarlo
$lobjUsuario= new clsUsuario;//Instancia la clase clsUsuario en $lobjUsuario, para poder usar sus metodos y atributos
$usuario=$_POST['usuario'];//Captura los datos enviados desde el campo USUARIO en la vista del index.php
$clave=$_POST['clave'];//Captura los datos enviados desde el campo CLAVE en la vista del index.php
$lobjUsuario->set_Usuario($usuario);//Envia el dato USUARIO a la clase clsUsuario Mediante el metodo SET_
$lobjUsuario->set_Clave($clave);//Envia el dato CLAVE a la clase clsUsuario Mediante el metodo SET_
//En esta serie de IF() se intenta determinar desde donde fue accionado o llamado este archivo, si desde el index con el botón ENTRAR o desde la intranet con el botón SALIR.
if($_POST['entrar'])//Si es desde el botón ENTRAR ingresa en la condición.
{
$datosUsuario=$lobjUsuario->login();//Como los datos ya fueron enviados a la clase, el solo tiene que ejecutar la funcion login() de la clase ClsUsuario, para verificar los datos del usuario.
if($datosUsuario[0])//si lo datos son correctos entonces entra en la condición para guardar los datos en variables $_SESSION
{
$_SESSION['usuario']=$datosUsuario[0]; //Se guarda el nombre de usuario con el cual ingresó.
$_SESSION['nombrerol']=$datosUsuario[1];//Se guarda el nombre del rol que tiene asignado ese usuario.
$_SESSION['idrol']=$datosUsuario[2];//Se guarda el ID del rol.
$_SESSION['cedulaper']=$datosUsuario[3];//Se guarda la cedula del usuario.
$_SESSION['msj']='Bienvedido al sistema '.$datosUsuario[0].'.';//Se guarda un mensaje, que posterior mente será borrado.
header('location: ../vista/intranet.php');//Y se redirecciona al archivo intranet.php
}
else //Si el usuario no existe o es incorrecto el usuario y/o clave este es sacado del sistema
{
$_SESSION['msj']='El usuario y/o clave que ingresó son incorrectos.'; //Se guarda un mensaje, que posterior mente será borrado.
header('location: ../intranet.php');//Y se redirecciona al archivo index.php
}
}
elseif($_POST['salir'])// Si el usuario ingresó aquí a traves de la intranet por medio del botón SALIR, entonces entrará en esta condicion.
{
session_destroy();//Desctruye los datos de la sessión que guardamos cuando ENTRÓ en el sistema.
session_start();//Se crea una session solo para que pueda ser guardado el mensaje de despedida.
$_SESSION['msj']='Hasta pronto! Su sesión ha sido cerrada.';//Se guarda un mensaje, que posterior mente será borrado.
header('location: ../intranet.php');//Y se redirecciona al archivo index.php
}
else //Si no entro por ningun botón o hubo un error entonces lo va a sacar.
{
$_SESSION['msj']='Disculpe ha habido un error.';//Se guarda un mensaje, que posterior mente será borrado.
header('location: ../intranet.php');//Y se redirecciona al archivo index.php
}
?>
Здесь появляется сообщение благополучного прибытия, которое было бы должно оказываться первым, но появляется во второй инстанции перед тем, как возвращать меня в index.
В конце концов, эта страница была бы должна меня пересылать в эту страницу, где появляется второе сообщение:
<?php
session_start(); //inicia la session, la cual permite trabajar con la variable $_SESSION
$usuario=(isset($_SESSION['usuario']))?$_SESSION['usuario']:"";//toma el valor que se guarda en la variable vista que está en la variable $_SESSION
$msj=(isset($_SESSION['msj']))?$_SESSION['msj']:"";//toma el valor que se guarda en la variable vista que está en la variable $_SESSION
$vista=(isset($_GET['vista']))?$_GET['vista']:"";//toma el valor que se guarda en la variable vista que está en la URL.
if(!$usuario) //verifica si existe algún usuario logueado en el arreglo usuario de la variable $_SESSION
{
echo '<script>alert("Acceso Denegado! Usted no tiene una sesión iniciada en el sistema.");window.location.href="../index.php";</script>'; // Si no existe un usuario logeado entonces le mostraŕa un mensaje y lo sacará para el inicio!
}
if($msj) //verifica si existe algún texto en el arreglo msj de la variable $_SESSION
{
echo '<script>alert("'.$msj.'");</script>';// si existia un mensaje este lo imprime mediante
unset($_SESSION['msj']);//borra lo que habia en la variable.
}
require_once('../clases/clase_rol.php');//Trae el archivo clase_rol.php para instanciarlo
require_once('../libreria/utilidades.php');//Trae el archivo utilidades.php para luego instanciarlo
require_once('../clases/clase_bitacora.php');//Trae el archivo utilidades.php para luego instanciarlo
$lobjRol=new clsRol;//Instancia la clase clsRol en $lobjRol, para poder usar sus metodos y atributos
$lobjUtil=new clsUtil;//Instancia la clase clsUtil en $lobjRol, para poder usar sus metodos
$lobjBitacora=new clsBitacora;//Instancia la clase clsUtil en $lobjRol, para poder usar sus metodos
$menu='';//Declaro la variable $menu
$lobjRol->set_Rol($_SESSION['idrol']);//Aquí se envia mediante un metodo SET a la clase rol el idrol del usuario (que se guardo cuando se logueo en el sistema).
$laModulos=$lobjRol->consultar_modulos();//Se consultan y se guardan en la variable $laModulos los módulos que tiene asignado el rol del usuario,
$Acceso_servicio=false;//Para verificar que el usuario no entre a un servicio que no tiene asignado declaro una variable como false, y luego la cambiaré a true si alguno de los servicios que tiene asignado el usuario es igual a la direccion a la que está entrando.
//Obtengo la carpeta del modulo
$carpeta= explode('/',$vista);
if($carpeta[0]=='')
$activo='active';
// se arma en la variable $menu todo el menu que se le mostrará al usuario
$menu.='<li class="'.$activo.'"><a href="intranet.php">Inicio</a></li>';
for($i=0;$i<count($laModulos);$i++) //Se recorre un ciclo para poder extraer los datos de cada uno de los módulos que tiene asignado el rol
{
$modulo=strtolower($lobjUtil->quitar_acentos($laModulos[$i][1]));
$activo=($modulo==$carpeta[0])?'active':'';
$menu.='<li class="dropdown '.$activo.'" >';
$menu.='<a href="#" class="dropdown-toggle" data-toggle="dropdown">'.$laModulos[$i][1].'<span class="caret"></span></a>';//Aquí se guar el nombre del módulo y los servicios de este modulo se van a ir anidando a partir de aquí.
$menu.='<ul class="dropdown-menu" role="menu">';
$laServicios=$lobjRol->consultar_servicios($laModulos[$i][0]); // aquí se consultan y guardan en la variable $laServicios los servicios que tiene registrado este módulo.
for ($j=0; $j <count($laServicios) ; $j++) //Se recorre un ciclo para poder extraer los datos de cada uno de los servicios que tiene asignado el modulo para poder constuir el menú
{
if($laServicios[$j][3])//Sí el servicio es visible para el menú lo agrega, sino no
{
$menu.='<li><a href="?vista='.$laServicios[$j][2].'">'.$laServicios[$j][1].'</a></li>'; //aqui se van agregando cada uno de los servicios al menú.
}
if($vista=="" || $vista==$laServicios[$j][2])//aquí voy comparando los servicios del usuario con la direccion a la cual a entrado.
{
$Acceso_servicio=true;
}
}
$menu.='</ul>';
$menu.='</li>'; //se cierra la construccion del menú
}
$lcReal_ip=$lobjUtil->get_real_ip();//Ejecuta el función get_real_ip para saber la IP de el usuario.
$lcDireccion=$_SERVER['REQUEST_URI'];//obtiene la direccion en la que se encuentra el usuario
$ldFecha=date('Y-m-d h:m');//obtiene la fecha actual
$lobjBitacora->set_Datos($lcDireccion,$ldFecha,$lcReal_ip,'','','',$_SESSION['usuario'],$Acceso_servicio); //envia los datos a la clase bitacora
$lnHecho=$lobjBitacora->registrar_bitacora();//registra los datos en la tabla tbitacora.
if(!$Acceso_servicio) //verifica si existe algún usuario logueado en el arreglo usuario de la variable $_SESSION
{
echo '<script>alert("Acceso Denegado! Usted no tiene el acceso permitido a este servicio del sistema.");window.location.href="intranet.php";</script>'; // Si no tiene asignado el servicio al cual intentó entrar, entonces lo manda al inicio de la intranet.!
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--<link rel="SHORT ICON" href="../bootstrap-3/img/favicon.ico">
<title>Modelo de seguridad</title>
<!-- CSS -->
<link href="../bootstrap-3/css/bootstrap.min.css" rel="stylesheet">
<link href="../bootstrap-3/css/style-intranet.css" rel="stylesheet">
<link href="../bootstrap-3/datepicker/css/datepicker.css" rel="stylesheet" type="text/css" />
<link href="../bootstrap-3/DataTables-1.10.2/media/css/jquery.dataTables.css" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="../bootstrap-3/DataTables-1.10.2/media/js/jquery.js"></script>
</head>
<body>
<!-- EMPIEZA: MENU SUPERIOR -->
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- <a class="navbar-brand" href="#"><img height="100%;" src="../bootstrap-3/img/logo"></a>-->
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav movil">
<?php echo $menu;?>
</ul>
<div class="navbar-form navbar-right">
<form name="form_intranet" action="../controlador/control_acceso.php" method="POST">
<input type="submit" name="salir" class="btn btn-danger" value="Salir">
</form>
</div>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
<!-- FIN: MENU SUPERIOR -->
<!-- EMPIEZA: CONTENEDOR -->
<div class="container-fluid">
<div class="row">
<!-- EMPIEZA: SIDEBAR -->
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<?php echo $menu;?>
</ul>
</div>
<!-- FIN: SIDEBAR -->
<!-- EMPIEZA: CUERPO -->
<div class="col-sm-9 col-md-10 main">
<?php
if(file_exists($vista.'.php')) //verifica el contenido de la variable vista.
{
include($vista.'.php');// y si exite el archivo que trae este incluirá el cintenido
}
else
{
include_once("panel_inicio.php");// Si no exite o no tiene nada la variable vista entonces trae por defecto la vista panel_inicio.php
}
?>
<!-- EMPIEZA: PIE -->
<footer></footer>
<!-- FIN: PIE -->
</div>
<!-- FIN: CUERPO -->
</div>
</div>
<!-- FIN: CONTENEDOR -->
<!-- jQuery (necesario para los plugins de bootstrap) -->
<!-- Incluye todos los plugins después de esta línea -->
<script src="../bootstrap-3/js/bootstrap.min.js"></script>
<script type="text/javascript" language="javascript" src="../bootstrap-3/DataTables-1.10.2/media/js/jquery.dataTables.js"></script>
<script src="../bootstrap-3/datepicker/js/bootstrap-datepicker.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#filtro').dataTable();
} );
$(function () {
$("[data-toggle='popover']").popover();
});
</script>
</body>
</html>
Если кому-то удается найти ошибку, я ему благодарен я я сотрудничал.