Foros del Web » Programando para Internet » PHP »

Como hacer dos menús diferentes dependiendo del logeo

Estas en el tema de Como hacer dos menús diferentes dependiendo del logeo en el foro de PHP en Foros del Web. Hola buenos día la presente es para indagar y encontrar una solución a mi inquietud lo que pasa es que tengo una pagina web de ...
  #1 (permalink)  
Antiguo 10/03/2016, 08:57
Avatar de cartau07  
Fecha de Ingreso: diciembre-2015
Ubicación: medellin
Mensajes: 95
Antigüedad: 8 años, 10 meses
Puntos: 1
Como hacer dos menús diferentes dependiendo del logeo

Hola buenos día la presente es para indagar y encontrar una solución a mi inquietud
lo que pasa es que tengo una pagina web de recursos humanos y tengo una pequeña inquietud
quiero hacer dos tipos de logeo que cuando entre un usuario común se vea una interfaz igual en las dos con funcionalidades diferente .... Como así?? colocar en el menú una barra de herramienta no se como se diga que cuando haga click por lo menos en "NOMINA" si esta logeado como usuario común la lleve a un link diferente de cuando se es el administrador es que he hecho condicionales de mi logeo y eso no me ha funcionado o sera que estoy haciendo algo imposible :(
  #2 (permalink)  
Antiguo 10/03/2016, 09:12
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 8 meses
Puntos: 171
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

digamos que tienes 2 tipos de usuarios, uno admin y otro comun, en la base de datos para los usuarios tienes un campo que se llama "nivel" y "a" es admin y "c" es comun.

Entonces en el menu haces una comprobación facil:

Código PHP:
Ver original
  1. $link = pagina_para_comun.php;
  2. if($dato_nivel == "a"){
  3. $link = pagina_para_admin.php;
  4. }

Asi solo deberas imprimir en el elemento <a> de la opción $link...

Esto lo puedes guardar en una variable $_SESSION[] y hacer la comprobación mucho mas facil, sin llamar a la base de datos cada vez... tambien te servira para hacer la comprobación directamente en los documentos

Código PHP:
Ver original
  1. if($_SESSION['nivel'] != "a"){
  2. echo "no tienes acceso a este documento";
  3. exit();
  4. }

Saludos!
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 10/03/2016, 09:28
Avatar de cartau07  
Fecha de Ingreso: diciembre-2015
Ubicación: medellin
Mensajes: 95
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

Ok osea hago una condicion que dependiendo del tipo de usuario entre a uno o al otro como tengo en el index pero en el link de mi barra de menu algo asi entendi o estoy errada
  #4 (permalink)  
Antiguo 10/03/2016, 09:35
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 8 meses
Puntos: 171
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

Digamos que tienes:

Código HTML:
Ver original
  1. <a href="seccion.php">CLICK PARA ENTRAR A SECCION</a>

Y lo que quieres es que dependiendo que tipo de usuario sea deje entrar a seccion.php o a otra_seccion.php

haces la comprobacion que te dije al inicio del documento

Código PHP:
Ver original
  1. $link = seccion.php; //este será para usuario comun
  2. if($dato_desde_base_nivel == "a"){
  3. $link = otra_seccion.php; //este sera para admin, si usuario es "a" $link se sobreescribirá por este nuevo valor
  4. }

entonces el <a>
solo debes modificarlo a:

Código HTML:
Ver original
  1. <a href="<?php echo $link; ?>">CLICK PARA ENTRAR A SECCION</a>
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 10/03/2016, 09:35
 
Fecha de Ingreso: septiembre-2014
Mensajes: 79
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

Yo lo tengo asi:
pagina. php
Código PHP:
<html><head></head>
<body>
<?php
session_start
();
if(
$_SESSION[nivel=="1"]){?>
<div>barra de herramientas...</div>
<?php
}
?>
<div>contenido...</div>
</body></html>
Solo si el usuario ingresó a travez de una session y solo si tiene el nivel requerido...... podrá ver la barra de herramientas.
¿Te sirve?
Saludos
  #6 (permalink)  
Antiguo 10/03/2016, 10:19
Avatar de cartau07  
Fecha de Ingreso: diciembre-2015
Ubicación: medellin
Mensajes: 95
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

Gracias a los dos cogi la idea pero ahora mi problema es que me sale error nose que estoy colocando mal muestro codigos
Código PHP:
<?php   

session_start
();
session_destroy();    
if (isset(
$_POST['Enviar'])) {
    require
'Conection.php';

$usuario $_POST["username"]; 
$clave $_POST["userpwd"]; 

    if(
$usuario!= "" && $clave!= ""){ 
    
$sql 'SELECT Usuario,Contraseña,Tipo FROM users WHERE Usuario="'.$usuario.'"'
    
$query=mysqli_query($conexion,$sql);
    if(
$umysqli_fetch_array($query)){ 
        if(
$u["Contraseña"] == $clave){ 
                   
$_SESSION["Usuario"] = $u['username']; 
                   if(
$u['Tipo'] == 1) { 
  
   
$_SESSION['Usuario'] = $u['username']; 
    echo
"admin"
    
header("location:../index1.php"); 
   } 
    
     else { 
      
      
$_SESSION['Usuario'] = $u['username']; 
      echo
"usuario comun";
      
header("location:../index.php");       
      }          
        }else{ 
            echo 
'Clave incorrecta. Volve a loguearte'
        } 
    }else{ 
        echo 
'Usuario inexistente'
    } 
     
}




  
?>
este mi conexion donde tengo la validacion cuando se logean
Código PHP:
<?php 
             
include'Modelo/Conexion.php';
               if(
$_SESSION['Usuario']== 1) {
               
               
$link"Solicitudes.php";
               if(
$dato_desde_base_nivel != 1){ 
                
              
$link "nomina.php";//este sera para admin, si usuario es "a" $link se sobreescribirá por este nuevo valor;
            
}
          }
              
?>
y aquí hago lo que me dicen de lo que necesito usuario Pero me sale error no se si la parte de traer la validación esta mal aunque tambien trate con tipo que donde hago la validación y nada Ayudaa
  #7 (permalink)  
Antiguo 10/03/2016, 10:31
 
Fecha de Ingreso: septiembre-2014
Mensajes: 79
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

Me parece que en el control donde preguntas si el user existe y que nivel tiene no deberías poner session_start ya que todavia estas controlando al usuario y aun no iniciaste la sesion.
Debería ser asi:

pagina.php
<div login>fotm input input submit </div>

<?php
if $POST[usuario]
control de usuario

if control de usuario =ok
session_start
if nivel usuario =1
echo <div>barra de herramientas</div>
?>


<div>contenido</div>
Quizas sea mas facil.
  #8 (permalink)  
Antiguo 10/03/2016, 10:34
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 8 meses
Puntos: 171
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

Primero que nada no puedes iniciar session y destruirla de inmediato

Código PHP:
<?php   

session_start
();
 
if (isset(
$_POST['Enviar'])) {
require
'Conection.php';

$usuario $_POST["username"]; 
$clave $_POST["userpwd"]; 

if(
$usuario!= "" && $clave!= ""){ 
$sql 'SELECT Usuario,Contraseña,Tipo FROM users WHERE Usuario = "'.$usuario.'"'
$query=mysqli_query($conexion,$sql);
if(
$umysqli_fetch_array($query)){ 
if(
$u["Contraseña"] == $clave){ 
$_SESSION["Usuario"] = $u['Usuario']; //asi lo seleccionas en SQL y no username, revisa
$_SESSION['Tipo'] = $u['Tipo']; // esto deberia devolver 1 ó 0
header("location:../index1.php");
exit();
}     
}else{ 
echo 
'Clave incorrecta. Volve a loguearte'

}else{ 
echo 
'Usuario inexistente'
}
}



  
?>
Arregla los {} si borre alguno de mas o deje uno de mas... con eso ya tendrias en variables de SESSION los valores Usuario y Tipo, donde los que tengan 1 son comunes y admin 0 (CAMPO TIPO EN BASE DE DATOS)

y la comprobacion seria en base a sessiones
Código PHP:
Ver original
  1. <?php
  2.              include'Modelo/Conexion.php';
  3.  $link = "nomina.php";//este sera para admin
  4.                if($_SESSION['Tipo']== 1) { //si es 1 es usuario comun
  5.                               $link= "Solicitudes.php"; //archivo para usuarios comunes
  6.           }
  7.               ?>
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #9 (permalink)  
Antiguo 10/03/2016, 10:49
Avatar de cartau07  
Fecha de Ingreso: diciembre-2015
Ubicación: medellin
Mensajes: 95
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

Hola entiendo lo que dices
y lo arreglare
petit89 es que tu opción es buena pero yo tengo dos Index que si es tipo 1 o tipo 2 entre a los indexs y tu condigo solo entra a uno , tambien al decirle si exite el boton enviar
haga comparacion con los input text de la interfaz login y asi el busque en mysql la variable y compare con los registro y entre a que le corresponde pero gracias de ante manos mas que todo por session_start();
  #10 (permalink)  
Antiguo 10/03/2016, 11:06
Avatar de cartau07  
Fecha de Ingreso: diciembre-2015
Ubicación: medellin
Mensajes: 95
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

Hola Gracias a ustedes por fin me dio jajajaja bueno les hice caso en lo que me dijeron en unas partes jejeje pues petit89 solo quite session_start(); estaba utilizando mal esta etiqueta ni recordaba que la había colocado también coloque la que me falto meter en SESSION_ que era el tipo y así el código me funciono a la perfección y gracias robertocarrillo si tu lógica no hubiera entendido que estaba haciendo mal ;) Dejo código:
Código PHP:
<?php 
             
include'Modelo/Conexion.php';
             
session_start();

              
$link "nomina.php";//este sera para admin
     
if($_SESSION['Tipo']== 1) { //si es 1 es usuario comun
            
             
$link"Solicitudes.php"//archivo para usuarios comunes
}
              
?>
ya totalmente me funciona :D
Código PHP:
<?php   


   
if (isset($_POST['Enviar'])) {
    require
'Conection.php';

$usuario $_POST["username"]; 
$clave $_POST["userpwd"]; 

    if(
$usuario!= "" && $clave!= ""){ 
    
$sql 'SELECT Usuario,Contraseña,Tipo FROM users WHERE Usuario="'.$usuario.'"'
    
$query=mysqli_query($conexion,$sql);
    if(
$umysqli_fetch_array($query)){ 
        if(
$u["Contraseña"] == $clave){ 
                   
$_SESSION["Usuario"] = $u['username'];
                   
$_SESSION['Tipo'] = $u['Tipo']; 
                   if(
$u['Tipo'] == 1) { 
  
   
$_SESSION['Usuario'] = $u['username']; 
    echo
"admin"
    
header("location:../index1.php"); 
   } 
    
     else { 
      
      
$_SESSION['Usuario'] = $u['username']; 
      echo
"usuario comun";
      
header("location:../index.php");       
      }          
        }else{ 
            echo 
'Clave incorrecta. Volve a loguearte'
        } 
    }else{ 
        echo 
'Usuario inexistente'
    } 
     
}




  
?>
y mi validacion
  #11 (permalink)  
Antiguo 10/03/2016, 11:09
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 8 meses
Puntos: 171
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

eso se arregla agregando un if de redireccionamiento:

Código PHP:
<?php   

session_start
();
 
if (isset(
$_POST['Enviar'])) {
require
'Conection.php';

$usuario $_POST["username"]; 
$clave $_POST["userpwd"]; 

if(
$usuario!= "" && $clave!= ""){ 
$sql 'SELECT Usuario,Contraseña,Tipo FROM users WHERE Usuario = "'.$usuario.'"'
$query=mysqli_query($conexion,$sql);
if(
$umysqli_fetch_array($query)){ 
if(
$u["Contraseña"] == $clave){ 
$_SESSION["Usuario"] = $u['Usuario']; //asi lo seleccionas en SQL y no username, revisa
$_SESSION['Tipo'] = $u['Tipo']; // esto deberia devolver 1 ó 0

///AHORA A REDIRECCIONAR
if($u['Tipo'] == 1){
header("location:../index1.php");
exit();
}else{
header("location:../indexX.php");
exit();
}
}     
}else{ 
echo 
'Clave incorrecta. Volve a loguearte'

}else{ 
echo 
'Usuario inexistente'
}
}
 
?>
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #12 (permalink)  
Antiguo 10/03/2016, 11:35
Avatar de cartau07  
Fecha de Ingreso: diciembre-2015
Ubicación: medellin
Mensajes: 95
Antigüedad: 8 años, 10 meses
Puntos: 1
Respuesta: Como hacer dos menús diferentes dependiendo del logeo

petit89 excelente me funciona igual y mucho mas organizado tengo otra inquietud y que pena
como hago para que cuando me logeo y entro a los menú se mantenga en el mismo index
como así es que mi index tiene son es una barra de menú que con tocar los nombres me redireciona a pagina pero deja de mostrar la conexión como si estuviera de admin o de usuario común trate de hacer lo mismo pero no me funciono tambien trate de hacerlo con echo dentro de el colocar las etiquetas dependido del logeo y tampoco ayuda please yo se que molesto mucho

Etiquetas: dependiendo, logeo
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 19:47.