Los administradores tienen acceso a todo el sistema, podrán crear, modificar, eliminar, buscar datos del sistema.
Los supervisores no pueden tener acceso a los usuarios, no puede crear, modificar, eliminar, ni ver la lista de usuarios.
Los vendedores no pueden tener acceso a los usuarios.
Restringir acceso al crear nuevo usuario
usuarioReg.php
<?php
// INICIAMOS SESSION
session_start();
// SI NO ES ADMINISTRADOR
if($_SESSION['rol'] != 1){
// REDIRIGIMOS A LA RAIZ
header('Location: ../');
}
// CONECTAMOS A BASE DE DATOS
include('../conexion/conex.php');
// SI PULSARON EL BOTÓN
if(!empty($_POST)){
$alert='';
// SI EXISTE UN CAMPO VACÍO
if(empty($_POST['nombre']) || empty($_POST['correo']) || empty($_POST['usuario']) || empty($_POST['clave']) || empty($_POST['rol'])){
$alert = '<p class="nsg_error">Todos los campos son obligatorio.</p>';
}else{
// RECIBIMOS LAS VARIABLES
$nombre = $_POST['nombre'];
$email = $_POST['correo'];
$user = $_POST['usuario'];
// ENCRIPTAMOS LA CLAVE
$clave = md5($_POST['clave']);
$rol = $_POST{'rol'};
// CONSULTAMOS SI EXISTE USUARIO O CORREO
$query = mysqli_query($conexion,"SELECT * FROM usuario WHERE usuario = '$user' OR correo = '$email'");
// RESULTADO DE LA CONSULTA
$result = mysqli_fetch_array($query);
// SI EXISTE REGISTRO
if($result > 0){
$alert = '<p class="nsg_error">El correo o usuario ya existe.</p>';
// DE LO CONTRARIO
} else {
// ALMACENA EL REGISTRO
$query_insert = mysqli_query($conexion,"INSERT INTO usuario (nombre,correo,usuario,clave,rol) VALUES ('$nombre','$email','$user','$clave','$rol')");
// VALIDAMOS
if($query_insert){
$alert = '<p class="nsg_save">Usuario creado correctamente</p>';
} else {
$alert = '<p class="nsg_error">Error al crear el usuario.</p>';
}
}
}
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<?php include('incluir/script.php') ?>
<title>Registro de usuario</title>
</head>
<body>
<?php include('incluir/header.php') ?>
<section id="container">
<div class="form_register">
<h1>Registro de usuario</h1>
<hr>
<div class="alert"><?php echo isset($alert) ? $alert : ''; ?></div>
<form>
<label for="nombre">Nombre: </label>
<input type="text" name="nombre" id="nombre" placeholder="Nombre completo">
<label for="correo">Correo eléctronico: </label>
<input type="email" name="correo" id="correo" placeholder="Correo eléctronico">
<label for="usuario">Usuario: </label>
<input type="text" name="usuario" id="usuario" placeholder="Usuario">
<label for="clave">Clave: </label>
<input type="password" name="clave" id="clave" placeholder="Clave de acceso">
<label for="rol">Tipo de usuario: </label>
<?php
$query_rol = mysqli_query($conexion,"SELECT * FROM rol");
// CIERRO LA CONEXION
mysqli_close($conexion);
$result_rol = mysqli_num_rows($query_rol);
?>
<select name="rol" id="rol">
<?php if($result_rol > 0){ while($rol = mysqli_fetch_array($query_rol)){ ?>
<option value="<?php echo $rol['idrol'] ?>"><?php echo $rol['rol'] ?></option>
<?php } } ?>
</select>
<input type="submit" value="Crear usuario" class="btn_save">
</form>
</div>
</section>
<?php include('incluir/footer.php') ?>
</body>
</html>
Eliminamos la variable de sesión en el header.php para evitar duplicados
Crear sesión en el index del sistema
sistema/index.php
<?php
// INICIAMOS SESSION
session_start();
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<?php include('incluir/script.php') ?>
<title>Sistema Ventas</title>
</head>
<body>
<?php include('incluir/header.php') ?>
<section id="container">
<h1>Bienvenido al sistema</h1>
</section>
<?php include('incluir/footer.php') ?>
</body>
</html>
Crear sesión en lista de usuarios
usuarioLista.php
<?php
// INICIAMOS SESSION
session_start();
// SI NO ES ADMINISTRADOR
if($_SESSION['rol'] != 1){
// REDIRIGIMOS A LA RAIZ
header('Location: ../');
}
// CONECTAMOS A BASE DE DATOS
include('../conexion/conex.php');
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<?php include('incluir/script.php') ?>
<title>Lista de usuarios</title>
</head>
<body>
<?php include('incluir/header.php') ?>
<section id="container">
<h1>Lista de usuarios</h1>
<a href="usuarioReg.php" class="btn_new">Crear usuario</a>
<form action="usuarioBuscar.php" method="get" class="form_buscar">
<input type="text" name="busqueda" id="busqueda" placeholder="Buscar">
<input type="submit" value="buscar" class="btn_buscar">
</form>
<table>
<tr>
<th>ID</th>
<th>Nombre</th>
<th>Correo</th>
<th>Usuario</th>
<th>Rol</th>
<th>Acciones</th>
</tr>
<?php
// PAGINADOR
// TOTAL REGISTROS
$query_reg = mysqli_query($conexion,"SELECT COUNT(*) as total_registro FROM usuario WHERE estatus = 1");
$resul_reg = mysqli_fetch_array($query_reg);
$total_reg = $resul_reg['total_registro'];
// REGISTROS A MOSTRAR POR PAGINA
$por_pag = 5;
// SI NO EXISTE PAGINA
if(empty($_GET['pag'])){
$pag = 1;
}else{
$pag = $_GET['pag'];
}
$desde = ($pag - 1) * $por_pag;
$total_pag = ceil($total_reg / $por_pag);
$query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE estatus = 1 ORDER BY nombre ASC LIMIT $desde,$por_pag");
// CIERRO LA CONEXION
mysqli_close($conexion);
$result = mysqli_num_rows($query);
if($result > 0){ while ($data = mysqli_fetch_array($query)) {
?>
<tr>
<td><?php echo $data['idusuario'] ?></td>
<td><?php echo $data['nombre'] ?></td>
<td><?php echo $data['correo'] ?></td>
<td><?php echo $data['usuario'] ?></td>
<td><?php echo $data['rol'] ?></td>
<td>
<a href="usuarioEditar.php?id=<?php echo $data['idusuario'] ?>" class="link_edit">Editar</a>
<?php
// SI EL USUARIO NO ES 1 MUESTRO BOTON ELIMINAR
if($data['idusuario'] != 1){
?>
|
<a href="usuarioElimina.php?id=<?php echo $data['idusuario'] ?>" class="link_delete">Eliminar</a>
<?php } ?>
</td>
</tr>
<?php } } ?>
</table>
<div class="paginador">
<ul>
<?php
if($pag != 1){
?>
<li><a href="?pag=<?php echo 1; ?>">|<</a></li>
<li><a href="?pag=<?php echo $pag - 1; ?>"><<</a></li>
<?php
}
for($i=1; $i <= $total_pag; $i++){
if($i == $pag){
echo '<li class="pageSelect">'.$i.'</li>';
}else{
echo '<li><a href="?pag='.$i.'">'.$i.'</a></li>';
}
}
if($pag != $total_pag){
?>
<li><a href="?pag=<?php echo $pag + 1; ?>">>></a></li>
<li><a href="?pag=<?php echo $total_pag; ?>">>|</a></li>
<?php } ?>
</ul>
</div>
</section>
<?php include('incluir/footer.php') ?>
</body>
</html>
Crear sesión en editar usuario
usuarioEditar.php
<?php
// INICIAMOS SESSION
session_start();
// SI NO ES ADMINISTRADOR
if($_SESSION['rol'] != 1){
// REDIRIGIMOS A LA RAIZ
header('Location: ../');
}
// CONECTAMOS A BASE DE DATOS
include('../conexion/conex.php');
// SI PULSARON EL BOTÓN
if(!empty($_POST)){
$alert='';
// SI EXISTE UN CAMPO VACÍO
if(empty($_POST['nombre']) || empty($_POST['correo']) || empty($_POST['usuario']) || empty($_POST['rol'])){
$alert = '<p class="nsg_error">Todos los campos son obligatorio.</p>';
}else{
// RECIBIMOS LAS VARIABLES
$idusuario = $_POST['idusuario'];
$nombre = $_POST['nombre'];
$email = $_POST['correo'];
$user = $_POST['usuario'];
// ENCRIPTAMOS LA CLAVE
$clave = md5($_POST['clave']);
$rol = $_POST{'rol'};
// CONSULTAMOS SI EXISTE USUARIO O CORREO
$query = mysqli_query($conexion,"SELECT * FROM usuario WHERE (usuario = '$user' AND idusuario != '$idusuario') OR (correo = '$email' AND idusuario != '$idusuario')");
// RESULTADO DE LA CONSULTA
$result = mysqli_fetch_array($query);
// SI EXISTE REGISTRO
if($result > 0){
$alert = '<p class="nsg_error">El correo o usuario ya existe.</p>';
// DE LO CONTRARIO
} else {
// VALIDAMO
if(empty($_POST['clave'])){
$sql_update = mysqli_query($conexion,"UPDATE usuario SET nombre = '$nombre', correo = '$email', usuario = '$user', rol = '$rol' WHERE idusuario = '$idusuario'");
} else {
$sql_update = mysqli_query($conexion,"UPDATE usuario SET nombre = '$nombre', correo = '$email', usuario = '$user', clave = '$clave', rol = '$rol' WHERE idusuario = '$idusuario'");
}
// EVALUAMOS
if($sql_update){
$alert = '<p class="nsg_save">Usuario actualizado correctamente</p>';
} else {
$alert = '<p class="nsg_error">Error al actualizar el usuario.</p>';
}
}
}
// CIERRO LA CONEXION
mysqli_close($conexion);
}
// RECUPERAMOS LOS DATOS
// SI NO EXIXTE ID
if(empty($_GET['id'])){
header('Location: usuarioLista.php');
// CIERRO LA CONEXION
mysqli_close($conexion);
}
// VALIDAR EXISTE USUARIO
$iduser = $_GET['id'];
$sql = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.idrol, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE idusuario = '$iduser'");
// CIERRO LA CONEXION
mysqli_close($conexion);
$resul_sql = mysqli_num_rows($sql);
// SI NO EXISTE REGISTRO REDIRECCIONAMOS
if($resul_sql == 0){
header('Location: usuarioLista.php');
// CASO CONTRARIO RECUPERO REGISTRO
} else {
while($data = mysqli_fetch_array($sql)){
$idusuario = $data['idusuario'];
$nombre = $data['nombre'];
$correo = $data['correo'];
$usuario = $data['usuario'];
$idrol = $data['idrol'];
$rol = $data['rol'];
$option = '';
if($idrol == 1){
$option = '<option value="'.$idrol.'" select>'.$rol.'</option>';
}else if($idrol == 2){
$option = '<option value="'.$idrol.'" select>'.$rol.'</option≫';
}else if($idrol == 3){
$option = '<option value="'.$idrol.'" select>'.$rol.'</option>';
}
}
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<?php include('incluir/script.php') ?>
<title>Actualizar usuario</title>
</head>
<body>
<?php include('incluir/header.php') ?>
<section id="container">
<div class="form_register">
<h1>Actualizar usuario</h1>
<hr>
<div class="alert"><?php echo isset($alert) ? $alert : ''; ?></div>
<form action="" method="post">
<input type="hidden" name="idusuario" value="<?php echo $idusuario; ?>">
<label for="nombre">Nombre: </label>
<input type="text" name="nombre" id="nombre" placeholder="Nombre completo" value="<?php echo $nombre; ?>">
<label for="correo">Correo eléctronico: </label>
<input type="email" name="correo" id="correo" placeholder="Correo eléctronico" value="<?php echo $correo; ?>">
<label for="usuario">Usuario: </label>
<input type="text" name="usuario" id="usuario" placeholder="Usuario" value="<?php echo $usuario; ?>">
<label for="clave">Clave: </label>
<input type="password" name="clave" id="clave" placeholder="Clave de acceso">
<label for="rol">Tipo de usuario: </label>
<?php
// CONECTAMOS A BASE DE DATOS
include('../conexion/conex.php');
$query_rol = mysqli_query($conexion,"SELECT * FROM rol");
// CIERRO LA CONEXION
mysqli_close($conexion);
$result_rol = mysqli_num_rows($query_rol);
?>
<select name="rol" id="rol" class="notItemOne">
<?php
echo $option;
if($result_rol > 0){ while($rol = mysqli_fetch_array($query_rol)){
?>
<option value="<?php echo $rol['idrol'] ?>"><?php echo $rol['rol'] ?></option>
<?php } } ?>
</select>
<input type="submit" value="Actualizar usuario" class="btn_save">
</form>
</div>
</section>
<?php include('incluir/footer.php') ?>
</body>
</html>
Crear sesión en eliminar usuario
usuarioElimina.php
<?php
// INICIAMOS SESSION
session_start();
// SI NO ES ADMINISTRADOR
if($_SESSION['rol'] != 1){
// REDIRIGIMOS A LA RAIZ
header('Location: ../');
}
include('../conexion/conex.php');
if(!empty($_POST)){
// EVALUAMOS QUE EL VALOR NO SEA EL SUPER-ADMINISTRADOR
if($_POST['idusuario'] == 1){
header('Location: usuarioLista.php');
// CIERRO LA CONEXION
mysqli_close($conexion);
// PARA QUE NO SIGA EJECUTANDO CODIGO
exit;
}
$idusuario = $_POST['idusuario'];
// ELIMINAR REGISTRO
//$query_delete = mysqli_query($conexion, "DELETE FROM usuario WHERE idusuario = '$idusuario'");
// CAMBIAR ESTATUS
$query_delete = mysqli_query($conexion,"UPDATE usuario SET estatus = 0 WHERE idusuario = '$idusuario'");
// CIERRO LA CONEXION
mysqli_close($conexion);
if($query_delete){
header('Location: usuarioLista.php');
} else {
echo "Error al eliminar";
}
}
// SI 'ID' NO EXISTE O ES IGUAL A 1
if(empty($_REQUEST['id']) || $_REQUEST['id'] ==1 ){
header('Location: usuarioLista.php');
// CIERRO LA CONEXION
mysqli_close($conexion);
} else {
$idusuario = $_REQUEST['id'];
$query = mysqli_query($conexion,"SELECT u.nombre, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE u.idusuario = '$idusuario'");
// CIERRO LA CONEXION
mysqli_close($conexion);
$resul = mysqli_num_rows($query);
if($resul > 0){
while($data = mysqli_fetch_array($query)){
$nombre = $data['nombre'];
$usuario = $data['usuario'];
$rol = $data['rol'];
}
} else {
header('Location: usuarioLista.php');
}
}
?>
<!DOCTYPE html>
<html lang="es">
<head>/span>
<meta charset="UTF-8">
<?php include('incluir/script.php') ?>
<title>Eliminar usuario</title>
</head>
<body>
<?php include('incluir/header.php') ?>
<section id="container">
<div class="data_delete">
<h2>¿Está seguro de eliminar el siguiente registro?</h2>
<p>Nombre: <span><?php echo $nombre; ?></span></p>
<p>Usuario: <span><?php echo $usuario; ?></span></p>
<p>Tipo de usuario: <span><?php echo $rol; ?></span></p>
<form method="post" action="">
<input type="hidden" name="idusuario" value="<?php echo $idusuario; ?>">
<a href="usuarioLista.php" class="btn_cancel">Cancelar</a>
<input type="submit" value="Aceptar" class="btn_ok">
</form>
</div>
</section>
<?php include('incluir/footer.php') ?>
</body>
</html>
Crear sesión en buscar usuario
usuarioBuscar.php
<?php
// INICIAMOS SESSION
session_start();
// SI NO ES ADMINISTRADOR
if($_SESSION['rol'] != 1){
// REDIRIGIMOS A LA RAIZ
header('Location: ../');
}
// CONECTAMOS A BASE DE DATOS
include('../conexion/conex.php');
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<?php include('incluir/script.php') ?>
<title>Lista de usuarios</title>
</head>
<body>
<?php include('incluir/header.php') ?>
<section id="container">
<?php
// CONVERTIR EN MINUSCULA
$busqueda = strtolower($_REQUEST['busqueda']);
if(empty($busqueda)){
header('Location: usuarioLista.php');
// CIERRO LA CONEXION
mysqli_close($conexion);
}
?>
<h1>Lista de usuarios</h1>
<a href="usuarioReg.php" class="btn_new">Crear usuario</a>
<form action="usuarioBuscar.php" method="get" class="form_buscar">
<input type="text" name="busqueda" id="busqueda" placeholder="Buscar">
<input type="submit" value="buscar" class="btn_buscar">
</form>
<table>
<tr>
<th>ID</th>
<th>Nombre</th>
<th>Correo</th>
<th>Usuario</th>
<th>Rol</th>
<th>Acciones</th>
</tr>
<?php
// PAGINADOR
// BUSCAR
$rol = '';
if($busqueda == 'administrador'){
$rol = " OR rol LIKE '%1%'";
}else if($busqueda == 'supervisor'){
$rol = " OR rol LIKE '%2%'";
}else if($busqueda == 'vendedor'){
$rol = " OR rol LIKE '%3%'";
}
$query_reg = mysqli_query($conexion,"SELECT COUNT(*) as total_registro FROM usuario idusuario LIKE '%$busqueda%' OR nombre LIKE '%$busqueda%' OR correo LIKE '%$busqueda%' OR usuario LIKE '%$busqueda%') AND estatus = 1");
$resul_reg = mysqli_fetch_array($query_reg);
$total_reg = $resul_reg['total_registro'];
// REGISTROS A MOSTRAR POR PAGINA
$por_pag = 5;
// SI NO EXISTE PAGINA
if(empty($_GET['pag'])){
$pag = 1;
}else{
$pag = $_GET['pag'];
}
$desde = ($pag - 1) * $por_pag;
$total_pag = ceil($total_reg / $por_pag);
$query = mysqli_query($conexion,"SELECT u.idusuario, u.nombre, u.correo, u.usuario, r.rol FROM usuario u INNER JOIN rol r ON u.rol = r.idrol WHERE (u.idusuario LIKE '%$busqueda%' OR u.nombre LIKE '%$busqueda%' OR u.correo LIKE '%$busqueda%' OR u.usuario LIKE '%$busqueda%' OR r.rol LIKE '%$busqueda%') AND estatus = 1 ORDER BY nombre ASC LIMIT $desde,$por_pag");
// CIERRO LA CONEXION
mysqli_close($conexion);
$result = mysqli_num_rows($query);
if($result > 0){ while ($data = mysqli_fetch_array($query)) {
?>
<tr>
<td><?php echo $data['idusuario'] ?></td>
<td><?php echo $data['nombre'] ?></td>
<td><?php echo $data['correo'] ?></td>
<td><?php echo $data['usuario'] ?></td>
<td><?php echo $data['rol'] ?></td>
<td>
<a href="usuarioEditar.php?id=<?php echo $data['idusuario'] ?>" class="link_edit">Editar</a>
<?php
// SI EL USUARIO NO ES 1 MUESTRO BOTON ELIMINAR
if($data['idusuario'] != 1){
?>
|
<a href="usuarioElimina.php?id=<?php echo $data['idusuario'] ?>" class="link_delete">Eliminar</a>
<?php } ?>
</td>
</tr>
<?php } } ?>
</table>
<?php if($total_reg != 0){ ?>
<div class="paginador">
<ul>
<?php
if($pag != 1){
?>
<li><a href="?pag=<?php echo 1; ?>&busqueda=<?php echo $busqueda; ?>">|<</a></li>
<li><a href="?pag=<?php echo $pag - 1; ?>&busqueda=<?php echo $busqueda; ?>"><<</a></li>
<?php
}
for($i=1; $i <= $total_pag; $i++){
if($i == $pag){
echo '<li class="pageSelect">'.$i.'</li>';
}else{
echo '<li><a href="?pag='.$i.'&busqueda='.$busqueda.'">'.$i.'</a></li>';
}
}
if($pag != $total_pag){
?>
<li><a href="?pag=<?php echo $pag + 1; ?>&busqueda=<?php echo $busqueda; ?>">>></a></li>
<li><a href="?pag=<?php echo $total_pag; ?>&busqueda=<?php echo $busqueda; ?>">>|</a></li>
<?php } ?>
</ul>
</div>
<?php } ?>
</section>
<?php include('incluir/footer.php') ?>
</body>
</html>
Mostramos el menú de usuario solo al Administrador
nav.php
<nav>
<ul>
<li><a href="#">Inicio</a></li>
<?php if($_SESSION['rol'] == 1){ ?>
<li class="principal">
<a href="#">Usuarios</a>
<ul>
<li><a href="usuarioReg.php">Nuevo Usuario</a></li>
<li><a href="usuarioLista.php">Lista de Usuarios</a></li>
</ul>
</li>
<?php } ?>
<li class="principal">
<a href="#">Clientes</a>
<ul>
<li><a href="#">Nuevo Cliente</a></li>
<li><a href="#">Lista de Clientes</a></li>
</ul>
</li>
<li class="principal">
<a href="#">Proveedores</a>
<ul>
<li><a href="#">Nuevo Proveedor</a></li>
<li><a href="#">Lista de Proveedores</a></li>
</ul>
</li>
<li class="principal">
<a href="#">Productos</a>
<ul>
<li><a href="#">Nuevo Producto</a></li>
<li><a href="#">Lista de Productos</a></li>
</ul>
</li>
<li class="principal">
<a href="#">Facturas</a>
<ul>
<li><a href="#">Nuevo Factura</a></li>
<li><a href="#">Facturas</a></li>
</ul>
</li>
</ul>
</nav>