Foros del Web » Programando para Internet » PHP »

acceso denegado a ciertas paginas

Estas en el tema de acceso denegado a ciertas paginas en el foro de PHP en Foros del Web. Hola quetal estoy haciendo un scrip para desloguar a ciertos usuario que tratan o entran en secciones de la pagina que no deberian estar o ...
  #1 (permalink)  
Antiguo 12/01/2009, 14:25
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 8 meses
Puntos: 32
acceso denegado a ciertas paginas

Hola quetal estoy haciendo un scrip para desloguar a ciertos usuario que tratan o entran en secciones de la pagina que no deberian estar o que sus permisos no son los suficientes para dejarlos entrar

Pues el codigo no tiene nada malo de hecho cumple con lo que quiero solo quiero preguntar que hacen ustedes para evitar este tipo de usuario

Bueno basicamente lo que hago es obtener la pagina en la que se encuentra la persona actual, y por medio de una funcion que me recive el login de la persona compruebo que permisos tiene en la DB y dependiendo de los permisos realizo una expresion regular que evalua la pagina en la que se encuentra y si esta dentro del rango automaticamente quito la session del usuario actual y de esta forma lo mando al login para que se vuelva a loguear

Aparte de esto creo que le puede servir a mucha gente ese scrip que he realizado jeje

Si tienen algun comentario sobre el scrip no duden en preguntar

Código PHP:
session_start();

if(
session_is_registered("login"))
{
    require_once(
"DB.php");
    
acceso($_SESSION["login"]);
    
}
else
{
    
//si no esta logueado realizo algo...
}

function 
acceso($login)
{
    
$url=$_SERVER['REQUEST_URI'];
    
$permisos=mysql_query("select permisos from usuarios where login='$login'");
        if(
mysql_num_rows($permisos)>0)
                {
                    while(
$row=mysql_fetch_array($permisos))
                    {
                        
$permiso=$row['permisos'];
                        
                            
                    }
                    
//despues de obtener los permisos hago lo redirecciono
                    
if($permiso==1//si es usuario 
                    
{
                        if(
ereg("(seccion_denegada)|(seccion_denegada2)",$url))
                        {
                            
                            
session_unset("login");
                        }
                    }
                    elseif(
$permiso==12)//si es moderador
                    
{
                        if(
ereg("(seccion_denegada)|(seccion_denegada2)",$url))
                        {
                            
                            
session_unset("login");
                        }
                    
                    }
                    
//si es administrador se supone que debe tener todos los permisos de acceso
                
                        
                        
                        
                        
                    
                
}
}

?> 
  #2 (permalink)  
Antiguo 12/01/2009, 14:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: acceso denegado a ciertas paginas

Código php:
Ver original
  1. <?php
  2. while($row=mysql_fetch_array($permisos)) {
  3.           $permiso=$row['permisos'];
  4. }

Esta linea la veo totalmente inecesaria si solo vas a tener un resultado porque no lo asignas directo usando split()?

Por otro lado es mejor si usas constantes en lugar del nombre del archivo, ya que depender sobre el nombre de la pagina te puede dar mas dolores de cabeza a que si dentro del código nombras la pagina de una forma, por ejemplo yo hago esto:

Código php:
Ver original
  1. <?php
  2. Security::check('nombre_de_accion');

Dentro de Security, checamos si el usuario tiene permisos para realizar la accion (usando Zend_Acl), algo así:
Código php:
Ver original
  1. public static function check($permission) {
  2.         // ...
  3.         $access = $acl->isAllowed( $User, $permission );
  4.  
  5.         // ...
  6.         if( !$access ) {
  7.               $Controller->redirect("/error/access");
  8.         }
  9. }

Saludos

Última edición por GatorV; 12/01/2009 a las 14:36
  #3 (permalink)  
Antiguo 12/01/2009, 14:41
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 8 meses
Puntos: 32
Respuesta: acceso denegado a ciertas paginas

Q buena sugerencia pero el problema es que aun no manejo PHP 5 =( estaba pensando en tomar un manual ya que es bien importante saberlo, respecto a la funcion split() estoy trabajando en ello para acomodarlo muchas gracias GatorV
  #4 (permalink)  
Antiguo 12/01/2009, 14:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: acceso denegado a ciertas paginas

Perdon, era list(), no split.

Código php:
Ver original
  1. <?php
  2. list($permiso) = mysql_fetch_row($permisos);

Saludos
  #5 (permalink)  
Antiguo 12/01/2009, 15:23
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 8 meses
Puntos: 32
Respuesta: acceso denegado a ciertas paginas

jajaaja con razon no veia forma de hacerlo no sabia como colocar la expresion regular del split(); jaja
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:17.