Проблема с доступом к модулям программы PHP

Я иду немного работая в этом коде и не смог решать ситуацию, оно я функционирует, когда я это тестирую в 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>

Если кому-то удается найти ошибку, я ему благодарен я я сотрудничал.

7
задан 16.07.2019, 17:30
0 ответов