Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2018, 11:49
Avatar de KATHYU
KATHYU
 
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Usar datos de resultado de Query, fuera del While

Buen día.

Tengo una duda y espero me den una luz.
En mi sistema, tengo varias opciones de menú a la que algunos no pueden ingresar, (Aprobar Ordenes de Compra por ejemplo) lo que hago es que al dar clic a esa opción se valla al php en cuestión y evalué si el usuario tiene privilegio de Aprobar Ordenes de Compra si tiene lo deja pasar y si no lo manda a una pagina de error y lo regresa a donde estaba antes de haber dado clic al enlace, hasta ahí todo bien, funciona y todo.

La cosa es que quiero implementar otro tipo de "seguridad" o mejor dicho otro tipo de método, quiero ocultar las opciones a las que no tenga permiso el usuario, por lo que se me ocurrió hacer un query donde consulto todos los privilegios por el usuario de la sesión

Código PHP:
Ver original
  1. $id = $_SESSION['iduser'];
  2. $privilegios = $mysqli->query("SELECT accion,privilegio FROM privilegio WHERE usuario='$id' ") or trigger_error($mysqli->error);
  3. while($row = $privilegios->fetch_array(MYSQLI_ASSOC)){
  4.     $axx = $row['accion'];
  5.     $pxx = $row['privilegio'];
  6.     $pasox = array($axx => $pxx);
  7.     // foreach($pasox as $acci=>$privi)
  8.     // {
  9.     // echo "Accion " . $acci . " Con Privilegio " . $privi;
  10.     // echo "<br>";
  11.     // }
  12.     // var_dump($pasox);
  13. }

* Esta porcion de codigo la quiero incluir en el menu para evitar ponerla en todos lados.

Pero haciendo pruebas, tengo el problema que no me logra sacar la info que necesito si no estoy dentro del while del result

Si habo el var_dump($pasox) dentro del while funciona y muestra todo el array ($pasox) pero si lo hago fuera solo muestra la ultima fila y ojo se que eso es normal pero lo que quiero saber es si puedo evitar eso, por eso es el tema

Incluso si quiero hacer un (if) fuera del while sucede lo mismo, obviamente cuando imprimo una tabla de datos lo hago dentro del while pero con esto no puedo hacerlo puesto que quiero tratar el resultado en otros archivos php, incluso pensé en meter el resultado en una variable de sesión pero no me sale.

Luego buscar en el array para ver si el fulano tiene o no "X" privilegio y por medio de CSS ocultarle algunas cosas

Código PHP:
Ver original
  1. if ($axx = 21 ) {
  2.     echo "Existe 1";
  3. }
  4. else{
  5.     echo "No Existe 1";
  6. }
  7.  
  8. if (in_array(21, $pasox) ) {
  9.     echo "Existe 2";
  10. }
  11. else{
  12.     echo "No Existe 2";
  13. }

Tienen alguna idea de que podría hacer para sacar un array o una variable que tenga todos los privilegios de un usuario y usarlo donde sea y cuando sea?

Se que hay varios modelos de gestión de permisos por ahí pero yo necesito algo que se adecue a lo que ya tengo
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.