Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] direccionamiento según el perfil del usuario

Estas en el tema de direccionamiento según el perfil del usuario en el foro de PHP en Foros del Web. Hola a todos. Estoy intentando aprender cómo hacer que tras logarse un usuario se le derive a una web en función del rol que tenga ...
  #1 (permalink)  
Antiguo 11/02/2015, 07:21
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 13 años, 11 meses
Puntos: 0
Pregunta direccionamiento según el perfil del usuario

Hola a todos.

Estoy intentando aprender cómo hacer que tras logarse un usuario se le derive a una web en función del rol que tenga asignado en la BBDD. Después de muchas pruebas tengo un código que creo que debería funcionar pero no lo hace y no se porqué, os pido que me ayudéis con él a ver si salgo del atolladero, gracias.

El usuario ya se ha identificado correctamente. Con ello se le envía a una página donde está este código.

Código PHP:
Ver original
  1. $usuario=$_SESSION['MM_Username']; /// Este es el que viene de el formulario Login para acceder a su cuenta
  2.  
  3. include "\\Connections\con_formacion_residentes.php";
  4.  
  5. $consulta=mysql_query("SELECT * FROM usuarios where usuario=$usuario");
  6.  
  7.  
  8. $fila=mysql_fetch_array($consulta);
  9.  
  10. $nivel=$fila["rol"];
  11.  
  12. if($nivel = "administrador"){
  13.  
  14.   Header("Location: paginaAdministrador.php");
  15.  
  16.   }
  17.  if($nivel = "profesor"){
  18.   Header("Location: paginaProfesor.php");
  19.   }
  20.  
  21.  if($nivel = "alumno"){
  22.   Header("Location: paginaAlumno.php");
  23.   }
  24.  
  25.  if($nivel = "administrativo"){
  26.   Header("Location: paginaAdministrativo.php");
  27.   }
  28.   else{
  29.  
  30.   Header("Location: nologin.php");}
  31.  
  32. ?>

Lo que ocurre es que se identifique quien se identifique siempre termina siendo enviado a la página del administrativo. Incluso he probado con usuarios que no tienen rol en la BBDD y terminan siendo enviados a la página de los administrativos.

¿Alguien que me pueda ayudar con éste tema? Gracias.
  #2 (permalink)  
Antiguo 11/02/2015, 08:20
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: direccionamiento según el perfil del usuario

Veo un error, por el cual pasa esto.

Código PHP:
Ver original
  1. //ERROR. si aqui el login viene del formulario, deberia traerse con POST no con SESSION, porque me debe evaluar el nuevo datos que se ingrese.
  2.     $usuario=$_SESSION['MM_Username'];
  3.     include "\\Connections\con_formacion_residentes.php";
  4.     $consulta=mysql_query("SELECT * FROM usuarios where usuario=$usuario");
  5.     $fila=mysql_fetch_array($consulta);
  6.     $nivel=$fila["rol"];
  7.     if($nivel = "administrador"){
  8.         header("Location: paginaAdministrador.php");
  9.         exit;
  10.     }
  11.     if($nivel = "profesor"){
  12.         header("Location: paginaProfesor.php");
  13.         exit;
  14.     }
  15.     if($nivel = "alumno"){
  16.         header("Location: paginaAlumno.php");
  17.         exit;
  18.     }
  19.    
  20.     if($nivel = "administrativo"){
  21.         header("Location: paginaAdministrativo.php");
  22.         exit;
  23.     }
  24.     else{
  25.         header("Location: nologin.php");
  26.         exit;
  27.     }
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #3 (permalink)  
Antiguo 12/02/2015, 04:11
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: direccionamiento según el perfil del usuario

Cita:
Iniciado por miguec04 Ver Mensaje
Veo un error, por el cual pasa esto.
Miguec04, te agradezco la ayuda pero no te entiendo, ¿porqué necesito pasarlo con POST? ¿No puedo usar las variables de sesión como cualquier otra variable que se pase? He simplificado el código para que la consulta fuese lo más clara posible pero quizás haya errado al hacerlo. La conexión no sólo la hago por nombre y usuario, también uso el perfil que el usuario tiene en la BBDD. Por ello utilizo una tercera variable $_SESSION['MM_UserGroup'] donde va ese perfil.

La recojo en la página que distribuye a los usuarios a sus páginas correspondientes según el rol. El código es:

Código PHP:
Ver original
  1. $nivel = $_SESSION['MM_UserGroup'];
  2. if($nivel = "administrador"){
  3.   Header("Location: paginaAdministrador.php");
  4.   }
  5. if($nivel = "profesor"){
  6.   Header("Location: paginaProfesor.php");
  7.   }
  8. if($nivel = "alumno"){
  9.   Header("Location: paginaAlumno.php");
  10.   }
  11. if($nivel = "administrativo"){
  12.   Header("Location: paginaAdministrativo.php");
  13.   }
  14. else{
  15. Header("Location: nologin.php");}
  16. ?>

Pero al final sólo consigo que los usuarios sean derivado hacia la página del administrativo, da igual el rol que tengan.

Yo compruebo que las variables de sesión del usuario se han pasado bien y las muestro en pantalla de la página del administrativo para ver qué está pasando. En ella muestro un mensaje que dice "Bienvenido sr. fulanito, su rol es tal" y obtengo bien los valores con lo que compruebo que las variables de sesión tiene el dato correcto pero luego no funciona a la hora de evaluar el valor del rol.

Soy muy novato en PHP con lo que lo mismo todo esto que he dicho es una chorrada que no tiene nada que ver con que yo esté acertado. No te asustes y lo que he dicho es un sinsentido. Gracias por la ayuda.
  #4 (permalink)  
Antiguo 12/02/2015, 04:48
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: direccionamiento según el perfil del usuario

Intento aportar algo a mi propia duda.

El problema no parecía ser más que un problema de cómo he generado el if.

Dejo aquí el código como lo tengo actualmente.

Código PHP:
Ver original
  1. $nivel = $_SESSION['MM_UserGroup'];
  2.  
  3. if($nivel == 1){
  4.   Header("Location: paginaAdministrador.php");
  5.   }
  6.   else if($nivel == 2){
  7.   Header("Location: paginaProfesor.php");
  8.   }
  9.   else if($nivel == 3){
  10.   Header("Location: paginaAdministrativo.php");
  11.   }
  12.   else if($nivel == 4){
  13.   Header("Location: paginaAlumno.php");
  14.   }
  15.   else{
  16.   Header("Location: nologin.php");}
  17. ?>

Gracias por la ayuda.

Etiquetas: header, roles, usuarios
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 09:52.