www - you need to grant write permissions for php on the following directory
Implementando permisos en PHP (10)
Impresionante, esta parece ser la mejor manera de hacer permisos en un CMS. ¿Sí? ¿No?
Tal vez, nunca lo he hecho de esa manera. Lo que he hecho es utilizar operadores bit a bit para almacenar una gran cantidad de configuraciones "sí o no" en un solo número en una sola columna en la base de datos.
Supongo que para permisos, de esta manera funcionaría bien si desea almacenar permisos en la base de datos. Si alguien quiere publicar algo de contenido, y solo quiere que los administradores y editores lo vean, solo tiene que almacenar el resultado de
($editor | $admin)
en la base de datos, luego para verificarlo, haz algo como
if ($user & $database_row[''permissions'']) {
// display content
} else {
// display permissions error
}
Intenté hacer esto varias veces sin suerte. Después de leer esta publicación , me interesó hacer esto de nuevo. Entonces, ¿alguien puede decirme por qué lo siguiente no funciona?
<?php
$guest = 1;
$editor = 2;
$admin = 4;
$user = $editor;
if( $user == ($editor | $admin) ) {
echo "Test";
}
?>
@mk: (2 | 4) evalúa a 6.
En mi opinión, esto no se escala bien. Realmente no he intentado usarlo en un proyecto a gran escala, pero un CMS parece complicado de usar.
Ha pasado mucho tiempo desde que usé PHP, pero supongo que esto funcionará:
<?php
$guest = 1;
$editor = 2;
$admin = 4;
$user = $editor;
if( ($user == $editor) || ($user == $admin) ) {
echo "Test";
}
?>
Use el operador OR bit a bit (|) para establecer bits, use el operador AND (&) para verificar los bits. Tu código debería verse así:
<?php
$guest = 1;
$editor = 2;
$admin = 4;
$user = $editor;
if( $user & ($editor | $admin) ) {
echo "Test";
}
?>
Si no entiende binario y exactamente lo que hacen los operadores bit a bit, debe ir a aprenderlo. Comprenderá cómo hacer esto mucho mejor.
$guest = 1;
$editor = 2;
$admin = 4;
$user = $editor;
if (user == $editor || $user == $admin) {
echo "Test";
}
(2 | 4) está evaluando a 6, pero 2 == 6 es falso.
Con el interés de no reinventar la rueda, ¿por qué no echar un vistazo a los sistemas de ACL / Autenticación como Zend ACL y Zend Auth ? Ambos pueden usarse independientemente del Zend Framework como un todo. El control de acceso es una situación complicada, por lo que uno se beneficia al menos de ver cómo lo hacen otros sistemas.
Lo he usado en informes de errores y funciona bastante bien. En cuanto a los permisos de los usuarios, debería funcionar muy bien: podría tener varias columnas para cada permiso de usuario en su base de datos o una columna de nivel de usuario en su base de datos. Ir por esta opción
Siempre depende de lo que necesites. Si ya conoces el Zend Framework, entonces repetiría la sugerencia Zend_Acl / _Auth que se hizo antes. Pero tenga en cuenta que cada marco tiene un componente similar.
La otra cosa que me viene a la mente es LiveUser . También me gusta trabajar mucho con él.
Creo que puedes hacer casi cualquier cosa y aunque tu enfoque parece muy simple, también es limitado ya que (a través de todos esos if) vas a poner mucha ACL-logic justo en el medio de tu aplicación. Lo cual no es lo mejor que se puede hacer para mantenerlo simple y extensible. ;)