Foros del Web » Programando para Internet » PHP »

Duda sobre sesiones.

Estas en el tema de Duda sobre sesiones. en el foro de PHP en Foros del Web. Buenas tardes. Tengo un sistema de sistema de logueo que funciona correctamente. Tengo 6 niveles de usuarios, y cada uno al loguearse, ve cosas distintas ...
  #1 (permalink)  
Antiguo 30/01/2014, 16:47
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 3 meses
Puntos: 2
Duda sobre sesiones.

Buenas tardes.

Tengo un sistema de sistema de logueo que funciona correctamente. Tengo 6 niveles de usuarios, y cada uno al loguearse, ve cosas distintas dependiendo del nivel que se le haya asignado. Pero además de eso, quiero que filtrar usuarios dependiendo de lo que pueden o no pueden ver.

Es decir, algo más o menos así:

Nivel 1: Puede manipular toda la B.D y sus datos.

Nivel 2: Sólo puede modificar datos.

Nivel 3: Solo puede ver todos los datos.

Nivel 4: Tiene a su cargo a personas del nivel 5, por lo tanto solo puede ver a los que le corresponden.

Nivel 5: Tiene a su cargo a personas del nivel 6, por lo tanto solo puede ver a los que le corresponden.

Nivel 6: Solo es viewer de sus propios datos.

Tengo una tabla que se llama login, en esta viene usuario, contraseña, nivel y pienso agregarle 'Zona' y de esa forma filtrarlo, es decir: el usuario del nivel 4, le corresponde la 'Zona B' y por lo tanto puede ver a los del nivel 5 de la misma zona, así como los del Nivel 6.

Y obviamente, alguien del Nivel 5 de la 'Zona x' solo logrará ver a los del nivel 6, pertenecientes a la misma 'Zona x'.

Mis preguntas son: ¿Se puede hacer eso? ¿Entraría de igual manera en las sesiones? ¿Dreamweaver permite anidar sesiones? Y en caso de que no. ¿Me podrían dar alguna sugerencia?

Espero y me puedan ayudar, y me haya dado a entender. Gracias.

Última edición por Karen_mBrK; 30/01/2014 a las 17:01
  #2 (permalink)  
Antiguo 30/01/2014, 18:25
Avatar de mark_ant0n  
Fecha de Ingreso: enero-2009
Ubicación: Comitan, Chiapas mx
Mensajes: 388
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: Duda sobre sesiones.

Pienso no sé si pudieras cambiar tu forma de manejalo te explico lo siguiente con tres tablas.

TABLA_ROLES

ID_ROL
DESCRIPCION ROL

Insert Into TABLA_ROLES(1, 'Administrador');
Insert Into TABLA_ROLES(2, 'Usuario Común');
Insert Into TABLA_ROLES(3, 'Otro usuario')

TABLA_PERMISOS
ID_PERMISO
DES_PERMISO
RUTA

Insert into TABLA_PERMISO Values(1, 'ACCESO A REGISTRO','http://localhost/prueba/registro.php');

Insert into TABLA_PERMISO Values(2, 'ACCESO A REPORTES','http://localhost/prueba/reportes.php');

TABLA_ROLES_PERMISOS
CONSECUTIVO_ROL_PERMISO
ID_ROL
ID_PERMISO

Insert Into TABLA_ROLES_PERMISOS Values(1,1,1)
Insert Into TABLA_ROLES_PERMISOS Values(2,1,2)


Solamente a tu usuario le pones el ID_ROL y de esa forma hereda los permisos que le hayas asignado a ese rol..

Lamentablemente tendrías que cambiar tu forma de manejar tus sesiones, pero te puede ayudar.


ya que puedes crear tantos roles quieras con diferentes permisos.
__________________
"Diseño de software a la medida"

http://www.sadhoc.com
  #3 (permalink)  
Antiguo 31/01/2014, 14:43
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: Duda sobre sesiones.

Gracias por tu ayuda. Pero, el problema está en que tengo que trabajar sobre Regiones y Zonas.

Es decir:

Alguien del Nivel 4, le toca la región 1. Y esta región contiene 5 zonas, (a, b, c, d,e) Y a otro del mismo nivel 5, le toca la región 2, pero las zonas (f, g, h i, j, k l) Y así sucesivamente.

Entonces, alguien del nivel 5, está a cargo de la 'Zona A'. Otro del mismo nivel 6, le toca la 'Zona B', pero también la 'C'. Y estos, lógicamente, son subordinados del responsable de la región 1.

Todo esto, se debe desarrollar tipo árbol, es decir. El del nivel 4, puede ver a los que tiene a su cargo del nivel 5, que estos a su vez tienen responsabilidad sobre el nivel 6, el cual contiene más elementos.

Y el problema radica, en que son 32 regiones, y 2033 zonas.

¿Alguna sugerencia? :( Te lo agradecería mucho.
  #4 (permalink)  
Antiguo 31/01/2014, 15:17
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Duda sobre sesiones.

no se como es la estructura de de los archivo y los permisos. pero creo que seria una forma mas simple rapida y funcional es es registrar en la base de datos los niveles y zonas por cada usuario entonces la estructura de archivos seria dividida por cada usuarios ex: admin, usuario, otros...,
entonces en cada carpeta "sea admin o ..." ha que comprobar que la session del mismo es correcta y por supuesto la vista y los datos accedidos son diferentes por cada permiso
__________________
cada vez que aprendes algo te crees que no sabes nada
  #5 (permalink)  
Antiguo 31/01/2014, 15:22
Avatar de mark_ant0n  
Fecha de Ingreso: enero-2009
Ubicación: Comitan, Chiapas mx
Mensajes: 388
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: Duda sobre sesiones.

Tu quieres algo como esto a grandes razgos?

------- REGION

REGION 1
REGION 2
REGION 3
REGION 4

------- ZONAS

ZONA A - REGION 1
ZONA B - REGION 1
ZONA C - REGION 1

ZONA D - REGION 2

ZONA E - REGION 3

------- NIVEL

REGION 1 - ZONA A - NIVEL 1
REGION 1 - ZONA B - NIVEL 2

REGION 2 - ZONA A - NIVEL 1

REGION 2 - ZONA A - NIVEL 2
__________________
"Diseño de software a la medida"

http://www.sadhoc.com
  #6 (permalink)  
Antiguo 31/01/2014, 16:20
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: Duda sobre sesiones.

Cita:
Iniciado por mark_ant0n Ver Mensaje
Tu quieres algo como esto a grandes razgos?

------- REGION

REGION 1
REGION 2
REGION 3
REGION 4

------- ZONAS

ZONA A - REGION 1
ZONA B - REGION 1
ZONA C - REGION 1

ZONA D - REGION 2

ZONA E - REGION 3

------- NIVEL

REGION 1 - ZONA A - NIVEL 1
REGION 1 - ZONA B - NIVEL 2

REGION 2 - ZONA A - NIVEL 1

REGION 2 - ZONA A - NIVEL 2
Si, a grandes rasgos se podría decir eso. Y a esto le sumamos, lo que ya tengo, es decir, el sistema de logueo, que me ayuda a restringir páginas que no todos pueden ver. Ya que esto de las zonas y regiones, lo aplicaré a la B.D para hacer búsquedas, ya que las sesiones pues se aplican a todo el sitio. Y esto me lleva de nuevo a mi pregunta inicial. ¿Cómo podría implementar todas las restricciones tanto de Regiones, Zonas, y tipos de usuario?
  #7 (permalink)  
Antiguo 31/01/2014, 16:27
 
Fecha de Ingreso: octubre-2012
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 8
Respuesta: Duda sobre sesiones.

utilizando tu bd, añadiendo la columna zona, se podría hacer.
Cada archivo tiene que tener una variable con la zona, ej : $zona = "zona";
En cada archivo haces una query para saber su zona y la comparas. if($zona == $zona_query){}else{echo "Esta no es tu zona!!";}

No te serviría??
  #8 (permalink)  
Antiguo 31/01/2014, 16:34
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: Duda sobre sesiones.

Cita:
Iniciado por botxii Ver Mensaje
utilizando tu bd, añadiendo la columna zona, se podría hacer.
Cada archivo tiene que tener una variable con la zona, ej : $zona = "zona";
En cada archivo haces una query para saber su zona y la comparas. if($zona == $zona_query){}else{echo "Esta no es tu zona!!";}

No te serviría??
Si, algo así se me había ocurrido. Hasta que me di cuenta de que tengo 32 regiones y 2033 zonas. Entonces supe que necesitaría hacer ese número de if's, o en su defecto, de Case's.
Porque también se me ocurrió, crear una tabla con todas las regiones y zonas, y después, en php, declarar una variable, que cachara el tipo de región y otra de zona, y en base a eso arrojara los usuarios que puede o no ver, para acto seguido, hacer la selección correspondiente y mostrar resultados.

El caso, es, que creo que eso tiene que ver con las sesiones, además que no sé con exactitud, como es que podría implementar todas esas restricciones.
  #9 (permalink)  
Antiguo 31/01/2014, 17:02
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: Duda sobre sesiones.

Cita:
Iniciado por arros Ver Mensaje
no se como es la estructura de de los archivo y los permisos. pero creo que seria una forma mas simple rapida y funcional es es registrar en la base de datos los niveles y zonas por cada usuario entonces la estructura de archivos seria dividida por cada usuarios ex: admin, usuario, otros...,
entonces en cada carpeta "sea admin o ..." ha que comprobar que la session del mismo es correcta y por supuesto la vista y los datos accedidos son diferentes por cada permiso
Ya tengo niveles de usuario. Seis para ser exactos, estos funcionan correctamente, cada uno al loguarse ve cosas distintas en la página principal, dependiendo del nivel que posee:

Super_Administrador
Administrador
Gerente
GerenteJR
Supervisor
User

A esto se entiende, que:
Súper_Administrador tiene el control sobre todos los de abajo.
El Administrador solo sobre Gerente, GerenteJR, Supervisor, y User.
Gerente sobre GerenteJR, Supervisor y User.
Supervisor solo tiene poder sobre user.

El problema es que no solo hay un gerente, hay varios, y estos tienen responsabilidad respecto a regiones, y a su vez a Zonas, las cuales son 2033. Justo como ya lo he explicado. :(
  #10 (permalink)  
Antiguo 31/01/2014, 17:11
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Duda sobre sesiones.

bueno
puede que te entiendo mal o los niveles son destinos. lo que yo referia es que cuando registrar todo en tu db siempre es mas facil pero tanbien has que saber como. ex:
la tabla es de esta forma:
id | username | passhash | active | role (tipodecuenta)
lo que mas importa es tipo de cuenta en esto tu puedes restringir el acceso
imaginamos que la cuenta es de un super Admin entonces la session es del mismo se creamos una clase + session distinguimos de cada uno.
__________________
cada vez que aprendes algo te crees que no sabes nada
  #11 (permalink)  
Antiguo 31/01/2014, 17:31
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: Duda sobre sesiones.

Cita:
Iniciado por arros Ver Mensaje
bueno
puede que te entiendo mal o los niveles son destinos. lo que yo referia es que cuando registrar todo en tu db siempre es mas facil pero tanbien has que saber como. ex:
la tabla es de esta forma:
id | username | passhash | active | role (tipodecuenta)
lo que mas importa es tipo de cuenta en esto tu puedes restringir el acceso
imaginamos que la cuenta es de un super Admin entonces la session es del mismo se creamos una clase + session distinguimos de cada uno.
Si, tengo una tabla exactamente igual a esa, se llama login. Y de ahí, restringí páginas utilizando sesiones, respecto al tipo de usuario que es (los niveles que ya mencioné) Pero a todo esto, le quiero sumar la restricción de búsquedas, es decir, hacer el filtrado de los usuarios pertenecientes a sus regiones y/o zonas.
  #12 (permalink)  
Antiguo 31/01/2014, 17:38
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Duda sobre sesiones.

Cita:
Iniciado por Karen_mBrK Ver Mensaje
Si, tengo una tabla exactamente igual a esa, se llama login. Y de ahí, restringí páginas utilizando sesiones, respecto al tipo de usuario que es (los niveles que ya mencioné) Pero a todo esto, le quiero sumar la restricción de búsquedas, es decir, hacer el filtrado de los usuarios pertenecientes a sus regiones y/o zonas.
pues se la tabla es como yo mesione entonces podemos asignar las zonas mas en la misma tabala pero ATT: en forma de asignar en en este caso hacemos un ejemplo:
imaginamos que tenemos en la columna de zonas: 5, 4, 6,... pero siempre en este caso cada zona esta separada por coma la nueva zona se asigna despuese de toda la cadena 5, 4, 6... de esta forma sera facil.
__________________
cada vez que aprendes algo te crees que no sabes nada
  #13 (permalink)  
Antiguo 31/01/2014, 17:59
 
Fecha de Ingreso: enero-2014
Mensajes: 127
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: Duda sobre sesiones.

Cita:
Iniciado por arros Ver Mensaje
pues se la tabla es como yo mesione entonces podemos asignar las zonas mas en la misma tabala pero ATT: en forma de asignar en en este caso hacemos un ejemplo:
imaginamos que tenemos en la columna de zonas: 5, 4, 6,... pero siempre en este caso cada zona esta separada por coma la nueva zona se asigna despuese de toda la cadena 5, 4, 6... de esta forma sera facil.

¿Cómo? ¿Hacer una sola columna que se llame zona, y en esta misma asignar, en caso de ser necesario cinco o seis zonas?
En caso de que te refieras a eso, no creo que sea buena idea, ya que los del siguiente nivel, es decir, los del nivel 6, solo pueden estar asignados a una sola zona. Y el filtrado sería sumamente complicado, o hasta imposible de realizar.
  #14 (permalink)  
Antiguo 01/02/2014, 09:40
Avatar de mark_ant0n  
Fecha de Ingreso: enero-2009
Ubicación: Comitan, Chiapas mx
Mensajes: 388
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: Duda sobre sesiones.

Cita:
Iniciado por Karen_mBrK Ver Mensaje
¿Cómo? ¿Hacer una sola columna que se llame zona, y en esta misma asignar, en caso de ser necesario cinco o seis zonas?
En caso de que te refieras a eso, no creo que sea buena idea, ya que los del siguiente nivel, es decir, los del nivel 6, solo pueden estar asignados a una sola zona. Y el filtrado sería sumamente complicado, o hasta imposible de realizar.
TABLA USUARIOS

ID_USUARIO
NOMBRE_USUARIO
ID_REGION

TABLA REGION
ID_REGION
NOMBRE_REGION

Suponiendo que lo trabajaras así, pudieras hacer un inner join con las regiones, zonas y niveles para obtener los detalles que necesitas.
Código MySQL:
Ver original
  1. From TABLA_USUARIOS Usu
  2. Inner Join TABLA_REGION  Reg
  3. On Usu.ID_REGION = Reg.ID_REGION
  4. Inner Join TABLA_ZONAS Zon
  5. On Zon.ID_REGION = Reg.ID_REGION
  6. Inner Join TABLA_NIVEL Niv
  7. On Niv.ID_REGION = Zon.ID_REGION
  8.  And Niv.ID_ZONA = Zon.ID_ZONA
  9. Where Usu.ID_USUARIO = 1
__________________
"Diseño de software a la medida"

http://www.sadhoc.com

Última edición por mark_ant0n; 06/02/2014 a las 09:28

Etiquetas: tabla, 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 18:40.