none
proteger vistas y redireccionar RRS feed

  • Pregunta

  • tengo una web que se maneja de la siguiente forma:

    http://www.miprimeraweb.net/admin/index.php?view=home

    http://www.miprimeraweb.net/admin/index.php?view=pacientes

    http://www.miprimeraweb.net/admin/index.php?view=doctores

    como podran apreciar al final de la palabra view se coloca la vista valga la redundancia a la que deseas acceder, sin embargo yo quiero que si el usuario no esta logueado no pueda acceder a las demas vistas y que si pone por ejemplo

    http://www.miprimeraweb.net/admin/index.php?view=doctores

    inmediatamente lo envia a la vista del login y de ser posible un mensaje que le diga que no puede acceder sin haber iniciado sesion, pero con que lo redireccione es mas que suficiente.

    esta es la parte del codigo donde se manejan las vistas:

    <?php
    // View.php
    // Una vista corresponde a cada componente visual dentro de un modulo.
    
    class View {
    	/**
    	* @function load
    	* la funcion load carga una vista correspondiente a un modulo
    	**/
    	public static function load($view){
    		// Module::$module;
    		if(!isset($_GET['view'])){
    			include "./core/modules/".Module::$module."/view/".$view."/widget-default.php";
    		}else{
    
    
    			if(View::isValid()){
    				include "./core/modules/".Module::$module."/view/".$_GET['view']."/widget-default.php";
    			}else{
    				View::Error("<b>404 NOT FOUND</b> View <b>".$_GET['view']."</b> folder  !!");
    			}
    
    
    
    		}
    	}
    
    	/**
    	* @function isValid
    	* valida la existencia de una vista
    	**/
    	public static function isValid(){
    		$valid=false;
    		if(isset($_GET["view"])){
    			if(file_exists($file = "core/modules/".Module::$module."/view/".$_GET['view']."/widget-default.php")){
    				$valid = true;
    			}
    		}
    		return $valid;
    	}
    
    	public static function Error($message){
    		print $message;
    	}
    
    }
    
    
    
    ?>

    tengo la siguiente función que se encarga de validar si un usuario inicio sesion y si lo hizo enviarlo a home:

    if(Session::getUID()!=""){
    		print "<script>window.location='index.php?view=home';</script>";
    }

    el problema es que trate de implementarla de la siguiente manera pero entonces como nisiquiera llega al login no puede acceder a ninguna vista:

    if(Session::getUID()!="")
    		{
    			// code...
    			if(!isset($_GET['view'])){
    				include "./core/modules/".Module::$module."/view/".$view."/widget-default.php";
    			}else{
    
    
    				if(View::isValid()){
    					include "./core/modules/".Module::$module."/view/".$_GET['view']."/widget-default.php";
    				}else{
    					View::Error("<b>404 NOT FOUND</b> View <b>".$_GET['view']."</b> folder  !!");
    				}
    
    			}
    		}
    		else {
    		// mensaje de error
    		}



    viernes, 11 de enero de 2019 15:25