Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/09/2015, 07:10
Avatar de xfxstudios
xfxstudios
 
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: sesiones en php

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.     }
__________________
[email protected]
HITCEL