Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/09/2015, 06:35
Avatar de joseanguiano
joseanguiano
 
Fecha de Ingreso: agosto-2015
Ubicación: Coatzacoalcos
Mensajes: 87
Antigüedad: 8 años, 8 meses
Puntos: 1
Pregunta Respuesta: sesiones en php

Cita:
Iniciado por xfxstudios Ver Mensaje
bueno asi realizo yo la verificación del usuario que se conecta:

Código PHP:
Ver original
  1. if(empty($_POST['usuario'])){
  2.     $msg = "";
  3. } else if(empty($_POST['clave'])){
  4.     $msg = "";
  5. }else{
  6.    
  7. $usuario = mysqli_real_escape_string($db, $_POST['usuario']);
  8. $cedula1 = $_POST['cedula'];
  9.    
  10. $users = $db->query("SELECT usuario,clave,nombre,cedula,nivel,zona FROM usuarios WHERE usuario ='$usuario' AND cedula = '$cedula1'");
  11. $row_result = $users->fetch_array();
  12.  
  13. $password = (crypt($_POST['clave'], $row_result['clave']));
  14.  
  15. $usuario = $row_result['usuario'];
  16. $clave = $row_result['clave'];
  17. $nivel = $row_result['nivel'];
  18. $zona = $row_result['zona'];
  19. $nombre = $row_result['nombre'];
  20. $cedula = $row_result['cedula'];
  21.  
  22.  if($clave == $password && $cedula == $cedula1){
  23.      $_SESSION['MM_Username'] = $usuario;
  24.      $_SESSION['logueado'] = true;
  25.      $_SESSION['nivel'] = $nivel; /*AQUÍ DECLARO EL NIVEL QUE TIENE EL USUARIO CONECTADO*/
  26.      $_SESSION['zona'] = $zona;
  27.      $_SESSION['cedula'] = $cedula;
  28.      $_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
  29.      
  30.      $fecha = $_POST['fecha'];
  31.      $hora = $_POST['hora'];
  32.      $ip = $_POST['ip'];
  33.      $acceso = $db->query("INSERT INTO accesos (usuario,nombre,cedula,fecha_entra,hora_entra,fecha_sale,hora_sale,ip_acceso) VALUES ('$usuario' , '$nombre' , '$cedula' , '$fecha' , '$hora' , '' , '' , '$ip')");
  34.      
  35.      header('location: app/escritorio.php');
  36.      
  37.  } else{
  38.      $fecha = $_POST['fecha'];
  39.      $hora = $_POST['hora'];
  40.      $ip = $_POST['ip'];   
  41.      $intento = $db->query("INSERT INTO intentos_accesos (fecha,hora,ip,campo_usuario,campo_clave) VALUES ('$fecha' , '$hora' , '$ip' , '$_POST[usuario]' , '$_POST[clave]')");
  42.      $msg = "Datos inválidos";
  43.        
  44.  }
  45. }

Como puedes realizo la dirección a una sola pagina, sea quien sea el que se loguee.


en las paginas hay un include que indica que menu se va a cargar de acuerdo al nivel de la persona que se conecta:

Código PHP:
Ver original
  1. //Carga del dash de acuerdo al usuario logueado
  2. if($_SESSION['nivel'] == "Usuario")
  3.     {
  4.         $menu = "menu_usuario";
  5.     }
  6.     else if($_SESSION['nivel'] == "Tecnico")
  7.         {
  8.             $menu = "menu_tecnico";
  9.         }
  10.         else if($_SESSION['nivel'] == "Cliente")
  11.             {
  12.                 $menu = "menu_cliente";
  13.             }
  14.             else if($_SESSION['nivel'] == "Administrador")
  15.                 {
  16.                     $menu = "menu_administrador";
  17.                 }

eso solo a a mostrar las paginas que le corresponde ver al usuario conectado por su nivel de acceso, no podra visualizar ninguna otra que yo no quiera, pero si de casualidad el usuario supiera el nombre de una pagina, por ejemplo de un administrador, en la variable de sesion de cada pagina esta la condicion de que se genere un error 404 si no tiene autorizacion para visualizarla:


Código PHP:
Ver original
  1. /*Ejemplo esta pagina solo puede ser vista por administradores, si alguien intenta acceder sin ese nivel, genera el erro*/
  2.      
  3.     if (isset($_SESSION['MM_Username']) && $_SESSION['logueado'] == true && $_SESSION['nivel'] == 'Administrdor')
  4.     {
  5.     }
  6.     else
  7.     {
  8.         header('Location:/JessalepComputer/error_acceso.php');
  9.      
  10.     exit;
  11.     }
Hola de nuevo amigo gracias nuevamente por tu gran ayuda que me estas brindando tengo un error de acuerdo al codigo que me mandaste quise acoplarlo al mio de la siguiente manera

Código PHP:
<?php
    
        session_start
();

        if(
$_SESSION['u_profile'] == "Trabajador"){
                    

                    }

        else{

            
header("Location: /sistemaarasystem/index.php");

        }

    
?>
funciona al perfeccion NO PUEDO ENTRAR A LA PARTE DE UN ADMINISTRADOR Y UN ADMINISTRADOR A LA PARTE DE UN USARIO NORMAL eso era la parte que me interesaba mas sin embargo al momento de entrar con el usuario trabajador de igual manera me bota al index.php infiere que dentro del if ira un sentencia mas.

Código PHP:
if($_SESSION['u_profile'] == "Trabajador"){
                    
                                                  
// que sentencia podria ir aqui para que observe //que de verdad soy el usuario norma y me deje en esta misma pagina 
                    


UNA VEZ MAS GRACIAS POR TU VALIOSA AYUDA
__________________
Lo fácil, ya lo hice, lo difícil lo estoy haciendo y lo imposible, me tardare pero lo lograre.