Nueva pregunta

Pregunta:

Fecha: 18-10-2018 10:38:30 (En Español)

crear menus diferentes segun los ususarios[Resuelta]

hola nuevamente quiero crear un menu diferentes para los diferentes usuarios que se conecten hasta ahora llevo esto

codigo de inicio de sesion

<form action="proceso2.php" method="POST">
<table>
<td>
<input type="text" name="usuario" value="" placeholder="usuario" required="">
</td>
</table>

<table>
<td>
<input type="password" name="clave" value="" placeholder="clave" required="">
</td>
</table>
<table>
<td>
<input type="submit" value="Ingresar">
</td>
</table>
</form>

y este es mi codigo php

<?php
session_start();
//session_destroy()

$usuario=$_POST['usuario'];
$clave=$_POST['clave'];


include("conexion.php");

$proceso = $conexion->query("SELECT * FROM usuarios WHERE usuario='$usuario' and clave='$clave' ");

if( $resutlado = mysqli_fetch_array($proceso)){
$_SESSION['grupo'] =='A';
header("location:acin.php");
}
else{
header("location:acin2.php");
}
?>


esta es mi base de Datos

Tabla: usuarios
id,usuario,clave,grupo(A y B( niveles de acceso))

hasta ahora funciona el IF ya que me muestra las diferentes paginas pero mi problema sale cuando quiero que el grupo A entre a una pagina y el grupo B entre a otra ya que actualmente el grupo A y B entran a la misma pagina y los errore de inicio de sesion estan entrando a la otra, creo que mi problema esta en la condicion IF yo trato de usar el condicional con el grupo para poder abrir paginas distintas $_SESSION['grupo'] =='A'; pero no me esta funcionando

claro mi pregunta quiero crear un menu distinto para los Usuarios A y otro para los B ya los menus los tengo creado solo me falta poder enviar los A a una pagina y los B a otro

gracias y disculpen la molestias
Etiquetas: HTML - MySQL - PHP Votos: 0 - Respuestas: 4 - Vistas: 21 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 18-10-2018 13:37:05 He replicado tu proyecto

    Suponiendo que la tabla usuarios sea la siguiente.


    Naturalmente la clave no debe ser texto plano debe ser hasheado password_hash. Este caso es meramente ilustrativo.

    Usando la estructura de control SWITCH

    Archivo: proceso2.php
    <?php
    session_start();
    $usuario=$_POST['usuario'];
    $clave=$_POST['clave'];
    
    include("conexion.php");
    
    $proceso = $conexion->query("SELECT * FROM usuarios WHERE usuario='$usuario' and clave='$clave' ");
    
    // Se verifica que se obtenga al usuario con pass correctos
    if($resutlado = mysqli_fetch_array($proceso)){
     // el usuario y el pass son correctos
        // identifico el grupo de pertenencia
        switch ($resutlado['grupo']){
            case 'A':
            // Pertenece al Grupo A
                $_SESSION['grupo'] = $resutlado['grupo'];
                header("location:acin.php");
            break;
            
            case 'B':
             // Pertenece al Grupo B
                $_SESSION['grupo'] = $resutlado['grupo'];
                header("location:acin2.php");
            break;
    
            default:
                echo 'El usuario no tiene grupo definido.';
        }
    }else{
        // el usuario y/o el pass no son correctos
        echo 'Usuario y/o Password incorrectos.';
    }
    


    También debes tener en cuenta, como puedes observar en la tabla de usuario, el usuario yerlin no tiene ningun grupo, en tal caso se resuelve en
    default:
                echo 'El usuario no tiene grupo definido.';
    




    También se puede hacer con IF en vez de switch para verificar el grupo, el cual no me agrada mucho esta lógica, igual te dejo el código.

    Archivo: proceso2.php
    <?php
    session_start();
    $usuario=$_POST['usuario'];
    $clave=$_POST['clave'];
    
    include("conexion.php");
    
    $proceso = $conexion->query("SELECT * FROM usuarios WHERE usuario='$usuario' and clave='$clave' ");
    // Se verifica que se obtenga al usuario con pass correctos
    if($resutlado = mysqli_fetch_array($proceso)){
        // el usuario y el pass son correctos
        // identifico el grupo de pertenencia
        if ($resutlado['grupo'] =='A'){
           $_SESSION['grupo'] = $resutlado['grupo'];
            header("location:acin.php");
        }
    
        if ($resutlado['grupo'] =='B'){
           $_SESSION['grupo'] = $resutlado['grupo'];
            header("location:acin2.php");
        }
    
        //  No tiene grupo de pertenencia
        if ($resutlado['grupo'] ==null){
            echo 'El usuario no tiene grupo definido.';
        }
    }else{
        // el usuario y/o el pass no son correctos
        echo 'Usuario y/o Password incorrectos.';
    }
    


    En este ejemplo como puedes observar en la tabla de usuario, el usuario yerlin no tiene ningun grupo, en tal caso se resuelve en

        //  No tiene grupo de pertenencia
        if ($resutlado['grupo'] ==null){
            echo 'El usuario no tiene grupo definido.';
        }
    



    Como dije es mejor utilizar switch del primer ejemplo ya que es mas entendible y si agregas otros grupos puedes colocarlos en la estructura de case

    Es posible de resolverlo de varias formas distintas de resolverlo.

    Otra es tener los grupos con la página a redirigir en un array asociativo
    Ejemplo práctico:
    <?php
    $gruposValidos= array("A"=>"acin.php","B"=>"acin2.php");
    $grupoDelUsuario  = "A";
    // compruebo que el grupo existe
    if (array_key_exists($grupoDelUsuario ,$gruposValidos))  {
          header("location:$gruposValidos[$grupoDelUsuario]");
    }else{
          echo "No tiene grupo asignado el usuario.";
    }
    ?>


    Código del proyecto:
    // Se verifica que se obtenga al usuario con pass correctos
    if($resutlado = mysqli_fetch_array($proceso)){
        // el usuario y el pass son correctos
        // identifico el grupo de pertenencia
        $gruposValidos= array("A"=>"acin.php","B"=>"acin2.php");
    
        // compruebo que el grupo existe
        if (array_key_exists($resutlado['grupo'] ,$gruposValidos))  {
            $_SESSION['grupo'] = $resutlado['grupo'];
           header("location:$gruposValidos[$resutlado['grupo']]");
        }else{
          echo "No tiene grupo asignado el usuario.";
        }
    }else{
        // el usuario y/o el pass no son correctos
        echo 'Usuario y/o Password incorrectos.';
    }
    


    Claro que en El usuario no tiene grupo definido se puede redirigir a otra pagina.

    Espero que te sea útil y que logres entender el codigo.

    Saludos
      Votos: 5 - Link respuesta
     
  • Fecha: 22-10-2018 05:17:04 Saludos desde Ecuador.

    Como se menciona en la respuesta anterior hay muchas formas de realizar este requerimiento.

    Rápidamente te comento como lo manejaría: en la tabla usuarios un campo es el que determina el grupo o tipo y ese es el que determina al momento del logueo (luego de verificar el usuario y contraseña e ingresar a la sesión) a qué tipo de usuario pertenece; de ahí, sea con un if o un case se podría incluir (include en php) la programación del menú que corresponda a ese tipo.

    Tengo varios sistemas con esa lógica y trabajan correctamente.

    Espero que la respuesta te resulte útil.
      Votos: 2 - Link respuesta
     
  • Fecha: 23-10-2018 05:38:24 Hola a todos gracias por su ayuda me sirvieron de mucho todas y cada una Gracias walter por tu ejemplo lo entendi a la primera tu ejemplo del IF era el que estaba tratando de hacer me gusto el ejemplo de switch por su variedad de opciones gracias a todos de verdad su ayuda y sus conocimientos mi duda fue aclara gracias.   Votos: 0 - Link respuesta
     
  • Fecha: 24-10-2018 17:08:03 Yerlin que bueno que te haya servido
    Pasa a resuelta a la pregunta ;)

    Saludos
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com