Foros del Web » Programando para Internet » PHP »

Duda con suma de bits

Estas en el tema de Duda con suma de bits en el foro de PHP en Foros del Web. Hola a todos, Estoy implementando un sistema de permisos basados en el aporte de abimaelrc http://www.forosdelweb.com/f18/aport...6/#post3509828 Pero me surge una duda de como complementar los ...
  #1 (permalink)  
Antiguo 12/07/2011, 09:23
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Duda con suma de bits

Hola a todos,

Estoy implementando un sistema de permisos basados en el aporte de abimaelrc
http://www.forosdelweb.com/f18/aport...6/#post3509828

Pero me surge una duda de como complementar los permisos si asignamos mas de un grupo a un usuario.

Como ejemplo:
Código PHP:
//Un grupo tiene asignados los permisos
define('ACCESS_VIEW',1);
define('ACCESS_ADD',2);
define('ACCESS_EDIT',4);
// Total  7

//Otro grupo por ejemplo
define('ACCESS_VIEW',1);
define('ACCESS_EDIT',4);
define('ACCESS_CREATE',8);
//Total  13

// El total de permisos de este usuario debería de ser:
define('ACCESS_VIEW',1); // Repetido
define('ACCESS_ADD',2);
define('ACCESS_EDIT',4); // Repetido
define('ACCESS_CREATE',8);
define('ACCESS_ADMIN',16);
//Total 31 
Como sería la sintaxis para realizar esta suma excluyendo los bits que se repiten?

Gracias de antemano.
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #2 (permalink)  
Antiguo 12/07/2011, 09:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda con suma de bits

Ningun grupo debería repetir nombre, así como ningún valor debería ser repetido.
Código PHP:
//Un grupo tiene asignados los permisos
define('GROUP_ACCESS_VIEW',1);
define('GROUP_ACCESS_ADD',2);
define('GROUP_ACCESS_EDIT',4);
// Total  7

//Otro grupo por ejemplo
define('OTHER_ACCESS_VIEW',8);
define('OTHER_ACCESS_EDIT',16);
define('OTHER_ACCESS_CREATE',32);
//Total  13

// El total de permisos de este usuario debería de ser:
define('PLUS_ACCESS_VIEW',64); // Repetido
define('PLUS_ACCESS_ADD',128);
define('PLUS_ACCESS_EDIT',256); // Repetido
define('PLUS_ACCESS_CREATE',512);
define('PLUS_ACCESS_ADMIN',1024);
//Total 31 
Al menos yo lo haría así, no hay necesidad de hacerlo de otra forma.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/07/2011, 09:56
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: Duda con suma de bits

Hola pateketrueke,

Sería ideal poder hacerlo así, el problema que me encuentro con esto es que los grupos se crean conforme a necesidades, no están definidos desde un principio. A diferencia de los permisos que si están definidos.

Si protejo una zona determina, al crear un grupo nuevo debería añadir otras líneas para dar acceso al nuevo grupo.

De la forma que comentaba al principio, (que igual está mal planteada mi forma de aplicarlos...) la zona que tenga protegida con el bit 1, solo tendrán acceso aquel grupo que tenga ese bit asignado.
Y de forma administrativa resultaría más sencillo gestionar los permisos mediante la suma de bits según la necesidad de crear estos grupos combinando más o menos permisos de accesos...

Gracias por pasar
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #4 (permalink)  
Antiguo 12/07/2011, 10:12
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: Duda con suma de bits

No te serviría mejor algo como Zend_Acl, con ese puedes gestionar los roles/recursos/permisos de una forma más granular y sin tanto esfuerzo.
  #5 (permalink)  
Antiguo 12/07/2011, 10:23
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: Duda con suma de bits

Hola GatorV, voy a probarlo a ver si puedo adaptarlo.

Gracias por pasar
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #6 (permalink)  
Antiguo 12/07/2011, 10:36
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: Duda con suma de bits

No es muy complicado, solo incluye el path a la librería de Zend usando set_include_path y con eso puedes trabajar correctamente incluyendo los archivos con require, o aún mejor usando el Autoloader:

Código PHP:
Ver original
  1. set_include_path (get_include_path() . PATH_SEPARATOR . realpath('/dir/donde/esta/Zend/library'));
  2. require_once('Zend/Loader/Autoloader.php');
  3. $instance = Zend_Loader_Autoloader::getInstance();
  4.  
  5. // Aqui haces todo lo de Zend_Acl.

Saludos.
  #7 (permalink)  
Antiguo 12/07/2011, 12:18
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: Duda con suma de bits

Perfecto GatorV!!

Lo probaré durante unos días para hacerme un poco con las funciones.

Gracias de nuevo.

Un saludo,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight

Etiquetas: suma
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 08:10.