ENTRAR EN EL FOROHACK ANTIGUO (Muchos temas viejos y de menor nivel)
16:52:57 23/02/2019
¿No estas registrado?
Login: Clave:
24 Usuarios en línea: 0 registrados, 24 invitados.
Conéctate y verás los usuarios en línea
Tema: Duda If - Else
    Responder
Todos Los Foros -> PHP -> Duda If - Else
Autor Mensaje (Ver Versión para Imprimir)
giveraI
Usuario novato
Sin Imagen

Mensajes: 4
Registrad@:
28/05/2011
Estado: Desconectad@
Ver último Post
Duda If - Else

Hola! tengo una duda estoy haciendo una pagina pero en la parte de usuarios esta categorizada por niveles, entonces si el usuario es Admin entonces que muestre un menu, si es Editor que me muestre otro menu y asi sucesivamente

asi tengo index.php

CÓDIGO

//verifica la sesion y el nivel de la sesion
<?php
if(isset($_SESSION['login'>) AND isset($_SESSION['level'>))
{?>
<div class="menu">
<div class="menuhaut">
<ul>
<center> Bienvenido: <b><?php echo $_SESSION['login'>; ?></b></a>
                  <br/>
                  </center>
                  <br/>
                  

          <li> <a href="index.php?fl=cuenta"><strong>Gestion de Cuenta</strong></a></li>
                              <li> <a href="#"><strong>Comprar Puntos</strong></a></li>

//menu si el usuario es admin
<?php if($_SESSION['level'> >= $levelADM) { ?>
<li> <a href="index.php?fl=add_productos" style="color: #ff0c00">Producto</a></li>
<li> <a href="index.php?fl=add_clientes" style="color: #ff0c00">Cliente</a></li>
<li> <a href="index.php?fl=add_compra" style="color: #ff0c00">Compra</a></li>
<li> <a href="index.php?fl=add_empleado" style="color: #ff0c00">Empleado</a></li>
<li> <a href="index.php?fl=add_proveedor" style="color: #ff0c00">Proveedor</a></li>
<li><a href="index.php?fl=account"   style="color: #ff0c00">Usuarios</span></a></li>
<li> <a href='index.php?fl=news&add' style='color: #ff0c00'>Nueva Noticia</a></li>
<li> <a href='index.php?fl=news' style='color: #ff0c00'>Modificar Noticias</a></li>
<?php } ?>

////menu si el usuario es agregador
<?php if($_SESSION['level'> >= $levelADD) { ?>
<li> <a href="index.php?fl=add_productos" style="color: #ff0c00">Agregar Producto</a></li>
<li> <a href="index.php?fl=add_clientes" style="color: #ff0c00">Agregar Cliente</a></li>
<li> <a href="index.php?fl=add_compra" style="color: #ff0c00">Agregar Compra</a></li>
<li> <a href="index.php?fl=add_empleado" style="color: #ff0c00">Agregar Empleado</a></li>
<li> <a href="index.php?fl=add_proveedor" style="color: #ff0c00">Agregar Proveedor</a></li>
<?php } ?>

////menu si el usuario es editador
<?php if($_SESSION['level'> >= $levelEDIT) { ?>
<li> <a href="index.php?fl=add_productos" style="color: #ff0c00">Actualizar Producto</a></li>
<li> <a href="index.php?fl=add_clientes" style="color: #ff0c00">Actualizar Cliente</a></li>
<li> <a href="index.php?fl=add_compra" style="color: #ff0c00">Actualizar Compra</a></li>
<li> <a href="index.php?fl=add_empleado" style="color: #ff0c00">Actualizar Empleado</a></li>
<li> <a href="index.php?fl=add_proveedor" style="color: #ff0c00">Actualizar Proveedor</a></li>
<?php } ?>

//menu si el usuario es agregador y editador
<?php if($_SESSION['level'> >= $levelADDEDIT) { ?>
<li> <a href="index.php?fl=add_productos" style="color: #ff0c00">Producto</a></li>
<li> <a href="index.php?fl=add_clientes" style="color: #ff0c00">Cliente</a></li>
<li> <a href="index.php?fl=add_compra" style="color: #ff0c00">Compra</a></li>
<li> <a href="index.php?fl=add_empleado" style="color: #ff0c00">Empleado</a></li>
<li> <a href="index.php?fl=add_proveedor" style="color: #ff0c00">Proveedor</a></li>
<?php } ?>
<li> <a href="index.php?fl=logout"><strong>Desconexion</strong></a></li>
</ul>
</div>
</div>
<?php
}
else
{
?>

<form method="post" action="index.php?fl=login" >
Cuenta:<br><input id="inputlogin" type="text" name="login" />
Contraseña<input id="inputpassword" type="password" name="passlog" value="" />
   <input name="hidden" type="hidden" value="log" /><br/>
   <input class="inputsubmit" value="Conectate" name="logon" type="submit" />
</form>
<br><a href="index.php?fl=inscription">Registrate !</a>
<br>
<a href="#">¿Olvidaste tu   Contraseña?</a>
      <ul class="lienmenu">
</ul>
<?php } ?>


lo tengo asi entonces cuando inicio sesion con el admin me muestra todos los menus pero si inicio sesion con el argegador y editador que es el ultimo menu me sale solo ese menu creo que se puede hacer con un if y else pero no se como alguien me puede explicar?
01/09/2011 20:55:24 
kplhack
Aprendiz nivel 2

Mensajes: 61
Registrad@:
25/12/2004
Estado: Desconectad@
Ir Arriba
RE: Duda If - Else

Pues ando viendo tu código y tu lógica esta correcta( también puedes tener un archivo con el menu de cada uno).

Algo raro que note es que usas >= para comprar el nivel del usuario, y sería más correcto usar un == o === para verificar ademas el tipo.
section/menu/admin.php
section/menu/agregador.php
section/menu/editor.php

CÓDIGO
//Tu código extra y donde verificas si existe la sesión

...

/* El valor de tu sesión */
$level = $_SESSION['level'>;

/* puedes crear incluso una constante con section/menu/ para mas orden */
define('MENU_PATH', 'section/menu/');

/* Puedes agregar esta linea en caso de que quieras poner un nivel por defecto si no existe la sesion level */

$level = isset($_SESSION['level'>) ? 1 : $_SESSION['level'>;

if ($level == 1) {
      include_once MENU_PATH . 'admin.php';
} else if ($level == 2) {
      include_once MENU_PATH . 'agregador.php';
} else if ($level == 3) {
      include_once MENU_PATH . 'editor.php';
}


Espero ayudar, si es que te entendi bien, si no dime, saludos!


18/11/2011 23:57:20 
RevangelyonX
Aprendiz nivel 3

Mensajes: 92
Registrad@:
11/09/2005
Estado: Desconectad@
Ir Arriba
RE: Duda If - Else

Buenas,

Siendo viejo el post, seré breve por si a alguién le interesa el tema que se esta tratando.

En primero lugar kplhack, lo interesante que tiene medir los niveles de acceso mediante números es por lo que voy a explicar a continuación. Supongamos el siguiente escenario de permisos:

Invitado=0
Usuario Registrado = 1
Admin = 2

Supongamos que tenemos una parte donde solo, los usuarios registrados, o los administradores pueden ver, podriamos evitar linias de código si hacemos:

if (permiso >= 1){
...
}

Luego, no entiendo en tu código kplhack esto:
$level = isset($_SESSION['level'>) ? 1 : $_SESSION['level'];

Es decir, si hay $_SESSION['level'] => $level=1 y si no $level=>$_SESSION['level']?

Esto genera, un Warning, si no hay $_SESSION['level'] no puedes assignarle a una variable nada... xD



Y bueno, en el código de givera, lo que no entiendo es que, no importa el usuario que haga clic en el enlace, que siempre le envias el mismo valor a la variable: add_productos, entonces, habiendo puntos en común para los usuarios esto sobra.

Poniendo otro ejemplo.
Un usuario puede comprar y vender
Un adminisrador puede comprar, y vender, y editar

CÓDIGO
/*Mostramos los enlaces que los dos usuarios si que pueden ver*/

echo "<a href=''>Comprar</a>";
echo "<a href=''>Vender</a>";

if (usuarioEsAdministrador()){
      echo "<a href=''>Editar</a>";
}




Referente a la pregunta de givera, una posible idea es la que te ofrece kplhack (sanando algún problemilla que hay), o bien, podrias crear una capa por encima de la sesión.


Yo personalmente, prefiero trabajar con clases.
En este caso, quizá podrias crear una clase de Usuario, con un método getAccess y que además extienda de una clase que verifique los accesos.

CÓDIGO
class userChecker{
      /*Aqui podriamos crear un método que llamaremos en la clase User que verifica según el level, el acceso que tiene*/
}

class User extends userChecker{

   /*la clase usuario tiene una propiedad llamada level, por ejemplo*/

   function getAccess(){



          /*devuelve un array con los enlaces donde el usuario si que tiene acceso
          Como solucion, puede ser un array asociativo
          $array['Login']="login.php"
          $array['Shop']="shop.php"
          ...*/

          /*Para ello, puedes o hardcodearlo, o guardarlo en una base de datos (para ello podrias utilizar la clase Padre userChecker), cogerlo de un archivo, etc.*/
         

   }
   ...

}


MAIN PHP

$user = new User();
/*setters que hagan falta*/
/*..*/

/*obtenemos los enlaces que el usuario puede ver*/
$linksArray=$user->getAccess();

foreach($linksArray as $assoc=>$link){
      /*dibujamos los enlaces, menú o lo que sea..*/
      echo "<a href='paginaWeb.com/'".$link.">".$assoc."</a>";
}





Es un ejemplo.. (no lo he probado, quizá falta el tipico ";")
Salu2

28/04/2012 19:12:29 


REGÍSTRATE PARA PODER ENVIAR UN MENSAJE (tardas 20 segundos)

Copyright ForoHack.com