Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] negar y conceder acceso a pagina dependiendo del nivel de usuario

Estas en el tema de negar y conceder acceso a pagina dependiendo del nivel de usuario en el foro de PHP en Foros del Web. hola a todos, resulta que tengo una pagina la cual tiene un modulo de inicio de sección .ya consigo que dependiendo del nivel me envie ...
  #1 (permalink)  
Antiguo 14/11/2012, 05:49
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta negar y conceder acceso a pagina dependiendo del nivel de usuario

hola a todos, resulta que tengo una pagina la cual tiene un modulo de inicio de sección .ya consigo que dependiendo del nivel me envie a su pagina respectiva. son tres niveles (administrador, supervisor, estudiante). el problema ahora surge, es por ejemplo si inicio secion como estudiante entra a su pagina, pero si coloco en la barra de navegador. administrador.php me entra a esa pagina de todos modos. le agradezco de antemano quien me pueda ayudar.

aqui les envio el codigo
a lo ultimo de este codigo esta la funcion de validar usuario q supongo ahi es donde tengo q hacer la condicion , estaba intentando como esta pero no hace nada

Código PHP:

<?php

//funcion para conectar a la base de datos y verificar la existencia del usuario
function conexiones($nombre$contrasena) {
    
//conexion con el servidor de base de datos MySQL
    
$conectar mysql_connect('localhost','root','');
    
//seleccionar la base de datos para trabajar
    
mysql_select_db('bd_ateneo',$conectar);
    
//sentencia sql para consultar el nombre del usuario
    
$sql "SELECT * FROM `bd_ateneo`.`usuarios` WHERE `nombre`='$nombre' AND `contrasena`='$contrasena'";
    
//ejecucion de la sentencia anterior
    
$ejecutar_sql=mysql_query($sql,$conectar);
if(
mysql_num_rows($ejecutar_sql)>0){
        
$fila=mysql_fetch_array($ejecutar_sql);    
    }






         

    
//si existe inicia una sesion y guarda el nombre del usuario
    
if (mysql_num_rows($ejecutar_sql)!=0){
        
//inicio de sesion
        
session_start();
        
//configurar un elemento usuario dentro del arreglo global $_SESSION
        
$_SESSION['nombre']=$nombre;
        
$_SESSION['nivel']=$nivel;
        
//retornar verdadero
        
        



        
    
if ($fila["nivel"]=="Administrador"){
             
header('Location:../Administrador.php');
        } else if (
$fila["nivel"]=="supervisor"){
           
header('Location:../supervisor.php');
        } else if (
$fila["nivel"]=="estudiante"){
             
header('Location:../estudiante.php');
        }
} else { 
header('Location:../inicio.html');

}  
//funcion para verificar que dentro del arreglo global $_SESSION existe el nombre del usuario
function verificar_usuario_a(){
    
//continuar una sesion iniciada
    
session_start();
    
//comprobar la existencia del usuario
    
if ($_SESSION['nombre'] && $_SESSION["nivel"] == "Administrador"){
        
        return 
true;
    }
    else if (
$_SESSION["nivel"] != "Administrador"){
        
        return 
false;}
    
    
//if($_SESSION["nivel"] !== "Administrador"){
//echo"ud no puede entrar a esta pagina";
//}
    
    
    
}


//funcion verificar usuario estudiante
function verificar_usuario_e(){
    
//continuar una sesion iniciada
    
session_start();
    
//comprobar la existencia del usuario
    
if ($_SESSION['nombre'] && $_SESSION["nivel"] == "estudiante"){
        return 
true;
    }
    
    
    
    
    
}



//funcion verificar usuario supervisor

function verificar_usuario_s(){
    
//continuar una sesion iniciada
    
session_start();
    
//comprobar la existencia del usuario
    
if ($_SESSION['nombre']){
        return 
true;
    }
    
    

    
}


?>


este es el codigo de salir.php

Código PHP:
<?php
include ('funciones.php');
if (
verificar_usuario_a()){
    
//si el usuario es verificado, se elimina los valores,se destruye la sesion y volvemos al formulario de ingreso
    
session_unset();
    
session_destroy();
    
header ('Location:../inicio.html');
} else {
    
//si el usuario no es verificado vuelve al formulario de ingreso
    
header ('Location:../inicio.html');
}



if (
verificar_usuario_e()){
    
//si el usuario es verificado, se elimina los valores,se destruye la sesion y volvemos al formulario de ingreso
    
session_unset();
    
session_destroy();
    
header ('Location:../inicio.html');
} else {
    
//si el usuario no es verificado vuelve al formulario de ingreso
    
header ('Location:../inicio.html');
}



if (
verificar_usuario_s()){
    
//si el usuario es verificado, se elimina los valores,se destruye la sesion y volvemos al formulario de ingreso
    
session_unset();
    
session_destroy();
    
header ('Location:../inicio.html');
} else {
    
//si el usuario no es verificado vuelve al formulario de ingreso
    
header ('Location:../inicio.html');
}

?>

y dentro de las paginas solo tengo esto

Código PHP:
<?php
include ('php/funciones.php');
//uso de la funcion verificar_usuario()
if (verificar_usuario_a()){
    
    
} else {
    
//si el usuario no es verificado volvera al formulario de ingreso
    
header('Location:inicio.html');
}
?>
  #2 (permalink)  
Antiguo 14/11/2012, 06:47
Avatar de fishdesign  
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 389
Antigüedad: 13 años
Puntos: 95
Respuesta: negar y conceder acceso a pagina dependiendo del nivel de usuario

Creo que lo estás enfocando de una forma errónea.
Lo que estás haciendo es triplicar todo según el tipo de usuarios que hay, y el concepto es que el privilegio del usuario sea simplemente una variable extra.

No sé como es la arquitectura de tu sitio, pero yo haría lo siguiente:
Crearía un nuevo valor asociado a cada usuario
0 = Administrador
1 = Supervisor
2 = Estudiante
y así sucesivamente...

Luego, en cada sección de la web, podrías tratarlo como módulos. Cada módulo tendría su configuración y dentro de esa configuración, un array donde diría que tipo de usuarios podrían cargar ese módulo.

El resultado sería algo así:

Código PHP:
Ver original
  1. if (in_array($user['role'], $privilegiosModulo)) {
  2.    // si tiene privilegios, cargas el contenido
  3. } else {
  4.   // no tiene privilegios
  5. }


Igualmente, no tienes que hacer distintas funciones para hacer logout, ya que el proceso es el mismo independientemente de su role.

Un saludo
__________________
Web Designer.
Themes-Up!, próximamente
  #3 (permalink)  
Antiguo 14/11/2012, 16:16
 
Fecha de Ingreso: septiembre-2012
Mensajes: 73
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: negar y conceder acceso a pagina dependiendo del nivel de usuario

muchas gracias por tu respuesta... bueno ya pude solucionar el problema, . aunque tienes razón estoy creando 3 funciones para cada tipo de usuario , voy a unirlas todas en una sola, y despues lo unico que tengo que hacer es colocarle los if.. gracias

Código PHP:
Ver original
  1. <?php
  2.  
  3. //funcion para conectar a la base de datos y verificar la existencia del usuario
  4. function conexiones($nombre, $contrasena) {
  5.     //conexion con el servidor de base de datos MySQL
  6.     $conectar = mysql_connect('localhost','root','');
  7.     //seleccionar la base de datos para trabajar
  8.     mysql_select_db('bd_ateneo',$conectar);
  9.     //sentencia sql para consultar el nombre del usuario
  10.     $sql = "SELECT * FROM `bd_ateneo`.`usuarios` WHERE `nombre`='$nombre' AND `contrasena`='$contrasena'";
  11.     //ejecucion de la sentencia anterior
  12.     $ejecutar_sql=mysql_query($sql,$conectar);
  13. if(mysql_num_rows($ejecutar_sql)>0){
  14.         $fila=mysql_fetch_array($ejecutar_sql);    
  15.     }
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.          
  23.  
  24.     //si existe inicia una sesion y guarda el nombre del usuario
  25.     if (mysql_num_rows($ejecutar_sql)!=0){
  26.         //inicio de sesion
  27.         session_start();
  28.         //configurar un elemento usuario dentro del arreglo global $_SESSION
  29.         $_SESSION['nombre']=$nombre;
  30.         $_SESSION['nivel']=$fila["nivel"];
  31.         //retornar verdadero
  32.        
  33.        
  34.  
  35.  
  36.  
  37.        
  38.     if ($fila["nivel"]=="Administrador"){
  39.              header('Location:../Administrador.php');
  40.         } else if ($fila["nivel"]=="supervisor"){
  41.            header('Location:../supervisor.php');
  42.         } else if ($fila["nivel"]=="estudiante"){
  43.              header('Location:../estudiante.php');
  44.         }
  45. } else {
  46. header('Location:../inicio.html');
  47. }
  48. }  
  49. //funcion para verificar que dentro del arreglo global $_SESSION existe el nombre del usuario
  50. function verificar_usuario_a(){
  51.     //continuar una sesion iniciada
  52.     session_start();
  53.     //comprobar la existencia del usuario
  54.     if ($_SESSION['nombre']!="" && $_SESSION["nivel"] == "Administrador"){
  55.        
  56.         return true;
  57.     }
  58.    
  59.    
  60.     //if($_SESSION["nivel"] !== "Administrador"){
  61. //echo"ud no puede entrar a esta pagina";
  62. //}
  63.    
  64.    
  65.    
  66. }
  67.  
  68.  
  69. //funcion verificar usuario estudiante
  70. function verificar_usuario_e(){
  71.     //continuar una sesion iniciada
  72.     session_start();
  73.     //comprobar la existencia del usuario
  74.     if ($_SESSION['nombre']!="" && $_SESSION["nivel"] == "estudiante"){
  75.         return true;
  76.     }
  77.    
  78.    
  79.    
  80.    
  81.    
  82. }
  83.  
  84.  
  85.  
  86. //funcion verificar usuario supervisor
  87.  
  88. function verificar_usuario_s(){
  89.     //continuar una sesion iniciada
  90.     session_start();
  91.     //comprobar la existencia del usuario
  92.     if ($_SESSION['nombre']!="" && $_SESSION["nivel"] == "supervisor"){
  93.         return true;
  94.     }
  95.    
  96.    
  97.    
  98.    
  99.    
  100. }
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109. ?>
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 23:59.