PHP - Validar Permisos Login PHP

 
Vista:
sin imagen de perfil
Val: 20
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Validar Permisos Login PHP

Publicado por Fabian (6 intervenciones) el 17/05/2019 04:46:12
Buen día a todos

Bueno, decidí escribir aquí ya que no encontré solución a mi inconveniente, cabe mencionar que soy algo novato en programación php, pues tengo la siguiente duda:

Tengo una pagina Index.php la cual me valida el usuario y contraseña y me envía a otra de validación de las credenciales llamada validar_login.php, si esta correcto me envía a la pagina principal.php la cual contiene la interfaz del usuario logueado, de lo contrario arroja un echo con información de credenciales no validas. Hasta ahí todo bien.

Tengo una tabla la cual tiene el usuario, la contraseña y los permisos, el inconveniente es que no se como hacer para que dependiendo los permisos en la pagina principal aparezca o no aparezca un <li>, es decir la pagina principal.php tiene 3 permisos los cuales son recepción, medico, enfermero. Si yo ingreso con usuario y clave de Recepción no debería aparecer los enlaces de Medico y Enfermero, como hago esto?

El name de Medico es Doctor y el name de Enfermero es nurse, tengo el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<html>
<style>
.titulo {
    font-family: Verdana,Geneva,sans-serif;
    font-size:30px;
    color : #F70053;
    text-align : center;
    }
</style>
</html>
 
<?php
$mysqli = new mysqli('RUTA', 'USER','PASS', 'BASE');
?>
 
<?php
//AQUI TRAIGO LOS NAMES DE LAS OTRAS PAGINAS
$User = $_REQUEST['User'];
$Pass = $_REQUEST['Pass'];
$Doctor = $_REQUEST['Doctor'];
$Nurse = $_REQUEST['Nurse'];
 
$resultado = $mysqli->query("SELECT * FROM zam_login WHERE ZAM_LOG_USR = '$User' and ZAM_LOG_CLAVE = '$Pass'");
 
if($rows=mysqli_fetch_array($resultado))
{
//AQUI DEFINO LA VARIABLE QUE ME LEE DE LA TABLA, ESTO FUNCIONA BIEN
$valor = $rows[8];
$Doc = $rows[9];
$Nur = $rows[10];
 
if($valor == "N")
{
echo "El usuario esta deshabilitado por el Administrador";
}
 
//AQUI ME TRAE LA PAGINA PRINCIPAL PORQUE SI ES CONTRASEÑA CORRECTA
//Y USUARIO TAMBIEN Y ESTA HABILITADO
if($valor == "A")
{
header("location: CXN_PRINCIPAL.php?");
}
 
//AQUI EMPIEZA EL ERROR PORQUE NO ME OCULTA LOS ELEMENTOS DEL MENU HACIENDO
//EL EJEMPLO DE INGRESAR COMO RECEPCIONISTA, LOS ELEMENTOS SON <li> < a href >
if($Doc == "N")
{
$Doctor.style == "visibility:hidden";
}
 
if($Nur == "N")
{
$Nurse.style == "visibility:hidden";
}
 
}
 
//AQUi TERMINA EL INCONVENIENTE
 
else
 
{
$titulo = "El usuario o contraseña son incorrectos";
echo "<center>";
  echo "<span class=\"titulo\">".$titulo."</span>";
echo "</center>";
}
 
?>

Les agradezco su colaboracion
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Mauro
Val: 1.668
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Validar Permisos Login PHP

Publicado por Mauro (467 intervenciones) el 17/05/2019 15:19:14
Para empezar te recomiendo usar

1
$rows=mysqli_fetch_array($resultado, MYSQLI_ASSOC)

De esa forma podrás acceder a los valores por el nombre de los campos de la tabla (en lugar de su posición).

Respecto de tu pregunta, no conozco la estructura de tu base, con lo cual es difícil darte una respuesta completa, pero iría más o menos por aquí:

1
2
3
4
5
6
7
8
9
<?php
 
$userPermissions = ... //Levantar los permisos propios del usuario
 
if ( in_array( 'ACCION_PRIVADA', $userPermissions ) ) {
?>
<li>Accion privada</li>
<?php
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 20
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Validar Permisos Login PHP

Publicado por Fabian (6 intervenciones) el 18/05/2019 23:41:36
Gracias por tu respuesta, realice la recomendación que me dijiste y funciona bien.

Tengo una Base de Datos llamada CXN y la tabla CXN_Login con campos Log_Usuario (varchar 50), Log_Clave (varchar 50), Log_Medico (varchar 50), Log_Recepcion (char 1)

La primera pagina es index.php aqui coloco el usuario y clave llamados user y pass respectivamente.

Al colocar usuario y clave correctos me lleva a la pagina validar_login.php, en esta pagina hago que se valide si el usuario logueado esta o no habilitado, en caso de que no este habilitado me arrojaun mensaje respectivo y en caso que si este habilitado me lleva a la pagina principal.php. Este es el codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<style>
.titulo {
    font-family: Verdana,Geneva,sans-serif;
    font-size:30px;
    color : #F70053;
    text-align : center;
    }
</style>
 
<?php
session_start();
extract ($_REQUEST);
require "CXN_BD.php";
$User = $_REQUEST['User'];
$Pass = $_REQUEST['Pass'];
$objConexion=Conectarse();
 
$sql="select * from CXN_LOGIN where Log_Usuario = '$User' and Log_Clave = '$Pass' and Log_Habilitado = 'A'";
$resultado=$objConexion->query($sql);
$existe = $resultado->num_rows;
 
if ($existe==1)
{
	$usuario=$resultado->fetch_object();
	$_SESSION['User']= $usuario->Log_Usuario;
	header("location: CXN_PRINCIPAL.php");
}
else
{
$titulo = "El usuario o contraseña son incorrectos o ha sido desautorizado por el administrador";
echo "<center>";
  echo "<span class=\"titulo\">".$titulo."</span>";
echo "</center>";
}
 
?>

Hasta aqui todo bien:

la pagina principal.php carga otro php que se llama menu.php y este trae el menu de opciones para los usuarios:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
session_start();
extract ($_REQUEST);
if (!isset($_SESSION['User']))
  header("CXN_INDEX.php?x=2");
?>
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Menu Principal</title>
<script src="menu.js"> </script>
 
 
<link rel="stylesheet" type="text/css" href="estiloMenu.css" >
<link href="estilo.css" rel="stylesheet">
 
</head>
<body>
 
<div class="borde_blanco" >
    <div class="logo_zamenis">
      <img id="logo" src="images/logotipo.png" alt="">
    </div>
 
    <div class="logo_zamenis">
      <img id="fondo" src="images/salud.png" alt="">
    </div>
</div>
 
<br><br><br><br>
 
<center><form name="Form_Menu" id="formulario">
<div id="divContenedor">
 
<div id="divMenu"> <?php include "CXN_MENU.php"?> </div>

En el menu, hay varios li y estos tienen mas li. El inconveniente empieza aqui, al ingresar como medico por ejemplo y al hacer clic en el li Recepcion me lleva a otro php llamado permisos.php y este debe filtrar el nombre del usuario logueado y verificar el campo Log_Recepcion de la tabla mensionada. El problema es que nose como llevar la variable del usuario logueado a este php para filtrar esa variable, estoy haciendolo algo asi pero no funciona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<style>
.titulo {
    font-family: Arial,Geneva,sans-serif;
    font-size:20px;
    color : #CD5C5C;
    text-align : center;
    }
</style>
 
<?php
$mysqli = new mysqli('127.0.0.1', 'root','', 'CXN');
 
$resultado = $mysqli->query("SELECT * FROM CXN_LOGIN WHERE Log_Usuario = '$User'"); // Aqui me carca error porque no existe la variable
 
if($rows=mysqli_fetch_array($resultado, MYSQLI_ASSOC))
{
 
$Recepcion = $rows["Log_Rol_Recepcion"];
 
if($Recepcion != "A")
{
echo "El usuario No tiene permisos de Recepcion";
}
else
{
echo "El usuario SI tiene permisos de Recepcion";;
}
 
}
 
else
 
{
$titulo = "El usuario tiene inconvenientes en los permisos o no existe";
echo "<center>";
  echo "<span class=\"titulo\">".$titulo."</span>";
echo "</center>";
}
 
?>

Necesito filtrar el usuario logueado para saber si Log_Recepcion esta habilitado o no.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 1.668
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Validar Permisos Login PHP

Publicado por Mauro (467 intervenciones) el 19/05/2019 19:55:06
¿Probaste guardando la info del usuario logeado en $_SESSION?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar