Ir para conteúdo
Fórum Script Brasil
  • 0

LOGIN COM PERMISSÕES


netocazuza

Pergunta

Tenho um sistema de login funcionando, checando usuário e senha para autenticar. Tá tudo funcional até agora, mas surgiu a necessidade de criar permissões, e estou meio perdido. Já criei o item permissões na tabela, e tentei algumas implementações, mas até agora, nada funcionou. Ou não abre, ou abre permitindo tudo.

Atualmente funciona assim:

O arquivo abaixo verifica login e senha e dá acesso:

<?php
session_start();
include 'conexao/conexao.php';
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];

$sql = "SELECT * FROM usuarioX WHERE usuarioX = '$usuario'";
$busca = mysqli_query($conexao, $sql);

#Buscar senha

$dados = mysqli_fetch_array($busca);
$senhabd = $dados['senhaX'];

$senhaVerificada = ($senha);

#Verifica niveis de permissoes usuario

#QUERO COLOCAR AS PERMISSÕES AQUI
#Verifica se existe o usuario

$linha = mysqli_affected_rows($conexao);
if ($linha == 1) {
    if ($senhabd == $senhaVerificada) {
        $_SESSION['usuario'] = $usuario;
        header('Location: index.php');
   } else {
        header('Location: login.php?id=1');

    }
} else {
    
   header('Location: login.php?id=2');

}
?>


No código acima, caso usuário e senha confira, ele direciona para o index, do contrário volta para o login. O que pretendo é acrescentar permissões de professor, aluno e pai. Tipo se 1 nas permissões, abrir o index. Se 2 nas permissões, abrir o aluno.php, e se 3 nas permissões, abrir o pai.php. Logo abaixo vou listar a página index, pois acredito que nela tem alguma ação que tá impedindo essa minha lógica. A idéia seria ter uma página dessa (index) para cada usuário, ou uma idéia melhor, caso alguém tenha.

<?php

session_start();
if (!isset ($_SESSION['usuario']) == true)
{
    unset($_SESSION['login']);
    header('Location: login.php');
}
$logado = $_SESSION['usuario'];
?>
<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <title>
    Dashboard - 
  </title>
  <!-- Favicon -->
  <link href="./assets/img/brand/favicon.png" rel="icon" type="image/png">
  <!-- Fonts -->
  <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700" rel="stylesheet">
  <!-- Icons -->
  <link href="./assets/js/plugins/nucleo/css/nucleo.css" rel="stylesheet" />
  <link href="./assets/js/plugins/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet" />
  <!-- CSS Files -->
  <link href="./assets/css/argon-dashboard.css?v=1.1.0" rel="stylesheet" />
</head>

<body>
<nav class="navbar navbar-vertical fixed-left navbar-expand-md navbar-light bg-white" id="sidenav-main">
    <div class="container-fluid">
      <!-- Toggler -->
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#sidenav-collapse-main" aria-controls="sidenav-main" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <!-- Brand -->
      <a class="navbar-brand pt-0" href="./index.html">
        <img src="./assets/img/brand/blue.png" class="navbar-brand-img" alt="...">
      </a>
      <!-- User -->
      <ul class="nav align-items-center d-md-none">
        <li class="nav-item dropdown">
          <a class="nav-link nav-link-icon" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <i class="ni ni-bell-55"></i>
          </a>
          <div class="dropdown-menu dropdown-menu-arrow dropdown-menu-right" aria-labelledby="navbar-default_dropdown_1">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <div class="dropdown-divider"></div>
            <a class="dropdown-item" href="#">Something else here</a>
          </div>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <div class="media align-items-center">
              <span class="avatar avatar-sm rounded-circle">
                <img alt="Image placeholder" src="./assets/img/theme/team-1-800x800.jpg
">
              </span>
            </div>
          </a>
          <div class="dropdown-menu dropdown-menu-arrow dropdown-menu-right">
            <div class=" dropdown-header noti-title">
              <h6 class="text-overflow m-0">Welcome!</h6>
            </div>
            <div class="dropdown-divider"></div>
            <a href="#!" class="dropdown-item">
              <i class="ni ni-user-run"></i>
              <span>Logout</span>
            </a>
          </div>
        </li>
      </ul>
      <!-- Collapse -->
      <div class="collapse navbar-collapse" id="sidenav-collapse-main">
        <!-- Collapse header -->
        <div class="navbar-collapse-header d-md-none">
          <div class="row">
            <div class="col-6 collapse-brand">
              <a href="./index.html">
                <img src="./assets/img/brand/blue.png">
              </a>
            </div>
            <div class="col-6 collapse-close">
              <button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#sidenav-collapse-main" aria-controls="sidenav-main" aria-expanded="false" aria-label="Toggle sidenav">
                <span></span>
                <span></span>
              </button>
            </div>
          </div>
        </div>
        <!-- Form -->
        <form class="mt-4 mb-3 d-md-none">
          <div class="input-group input-group-rounded input-group-merge">
            <input type="search" class="form-control form-control-rounded form-control-prepended" placeholder="Search" aria-label="Search">
            <div class="input-group-prepend">
              <div class="input-group-text">
                <span class="fa fa-search"></span>
              </div>
            </div>
          </div>
        </form>
        <!-- Navigation -->
        <ul class="navbar-nav">
          <li class="nav-item  class=" active" ">
          <a class=" nav-link active " href=" index.php"> <i class="ni ni-tv-2 text-primary"></i> Dashboard
            </a>
          </li>
         <li class="nav-item">
            <a class="nav-link " href="#">
              <i class="ni ni-satisfied text-orange"></i> Usuarios
            </a>
          </li>
    <li class="nav-item" style="margin-left: 10px">
            <a class="nav-link " href="tipoUsuario.php">
             Cadastrar Tipo Usuario
            </a>
          </li>
    <li class="nav-item" style="margin-left: 10px">
            <a class="nav-link " href="usuario_hpac.php">
             Cadastrar Usuario
            </a>
          </li>
    
    
          <li class="nav-item">
            <a class="nav-link " href="#">
              <i class="ni ni-shop text-blue"></i> Empresas
            </a>
          </li>
    <li class="nav-item" style="margin-left: 10px">
            <a class="nav-link " href="ramoAtividade.php">
             Cadastrar Ramo de Atividade 
            </a>
          </li>
    <li class="nav-item" style="margin-left: 10px">
            <a class="nav-link " href="formularioPJ.php">
             Cadastrar Empresa 
            </a>
          </li>

          <li class="nav-item">
            <a class="nav-link " href="#">
              <i class="ni ni-single-02 text-yellow"></i> Cliente
            </a>
          </li>
    <li class="nav-item" style="margin-left: 10px">
            <a class="nav-link " href="formularioCliente.php">
             Cadastrar Cliente 
            </a>
          </li>      
          <li class="nav-item">
            <a class="nav-link " href="#">
              <i class="ni ni-bullet-list-67 text-red"></i> Listar Tabelas
            </a>
          </li>
          <li class="nav-item" style="margin-left: 10px">
            <a class="nav-link " href="listarPJ.php">
             Listar Empresas 
            </a>
          </li>
          
          <li class="nav-item">
            <a class="nav-link" href="./examples/login.html">
              <i class="ni ni-key-25 text-info"></i> Login
            </a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="./examples/register.html">
              <i class="ni ni-circle-08 text-pink"></i> Register
            </a>
          </li>
        </ul>
        <!-- Divider -->
        <!-- Heading -->
        <!-- Navigation -->
        </div>
    </div>
  </nav>
  <div class="main-content">
    <!-- Navbar -->
    <nav class="navbar navbar-top navbar-expand-md navbar-dark" id="navbar-main">
      <div class="container-fluid">
        <!-- Brand -->
        <a class="h4 mb-0 text-white text-uppercase d-none d-lg-inline-block" href="./index.html">Dashboard</a>
        <!-- Form -->
        <!-- User -->
        <ul class="navbar-nav align-items-center d-none d-md-flex">
          <li class="nav-item dropdown">
            <a class="nav-link pr-0" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
              <div class="media align-items-center">
                <span class="avatar avatar-sm rounded-circle">
                  <img alt="Image placeholder" src="./assets/img/theme/team-4-800x800.jpg">
                </span>
                <div class="media-body ml-2 d-none d-lg-block">
                  <span class="mb-0 text-sm  font-weight-bold"><?php echo $logado ?></span>
                </div>
                <div class="media-body ml-2 d-none d-lg-block">
                  <span class="mb-0 text-sm  font-weight-bold"><?php echo $nivel ?></span>
                </div>
              </div>
            </a>
            <div class="dropdown-menu dropdown-menu-arrow dropdown-menu-right">
              <div class=" dropdown-header noti-title">
                <h6 class="text-overflow m-0">Bem-vindo</h6>
              </div>
              <div class="dropdown-divider"></div>
              <a href="logout.php" class="dropdown-item">
                <i class="ni ni-user-run"></i>
                <span>Logout</span>
              </a>
            </div>
          </li>
        </ul>
      </div>
    </nav>
    <!-- End Navbar -->
<!-- Header -->
    <div class="header bg-gradient-primary pb-8 pt-5 pt-md-8">
      <div class="container-fluid">
        <div class="header-body">
          <!-- Card stats -->
          
          <div class="row">
            <!-- inicio primeiro quadrado -->
            
            <div class="col-xl-3 col-lg-6">
              <div class="card card-stats mb-4 mb-xl-0">
                <div class="card-body">
                  <div class="row">
                    <div class="col">
                      <h5 class="card-title text-uppercase text-muted mb-0">Empresas</h5>
            <?php
                include 'conexao/conexao.php';
                $sql = "SELECT COUNT(id_empresa) as quantidade FROM empresa";
                $busca = mysqli_query($conexao, $sql);
                $dados = mysqli_fetch_array($busca);
                $quantidade = $dados['quantidade'];
            ?>
                      <span class="h2 font-weight-bold mb-0"><?php echo $quantidade ?></span>
                    </div>
                    <div class="col-auto">
                      <div class="icon icon-shape bg-danger text-white rounded-circle shadow">
                        <i class="fas fa-chart-bar"></i>
                      </div>
                    </div>
                  </div>
                  <p class="mt-3 mb-0 text-muted text-sm">
                     <span class="text-nowrap"></span>
                  </p>
                </div>
              </div>
            </div>
          <!-- fim primeiro quadrado -->
          <!-- inicio segundo quadrado -->
            
            <div class="col-xl-3 col-lg-6">
              <div class="card card-stats mb-4 mb-xl-0">
                <div class="card-body">
                  <div class="row">
                    <div class="col">
                      <h5 class="card-title text-uppercase text-muted mb-0">Usuarios</h5>
            <?php
                include 'conexao/conexao.php';
                $sql = "SELECT COUNT(id_usuario) as quantidade FROM usuario_hpac";
                $busca = mysqli_query($conexao, $sql);
                $dados = mysqli_fetch_array($busca);
                $quantidade = $dados['quantidade'];
            ?>
                      <span class="h2 font-weight-bold mb-0"><?php echo $quantidade ?></span>
                    </div>
                    <div class="col-auto">
                      <div class="icon icon-shape bg-danger text-white rounded-circle shadow">
                        <i class="fas fa-chart-pie"></i>
                      </div>
                    </div>
                  </div>
                  <p class="mt-3 mb-0 text-muted text-sm">
                     <span class="text-nowrap"></span>
                  </p>
                </div>
              </div>
            </div>
          <!-- fim segundo quadrado -->
            
            <div class="col-xl-3 col-lg-6">
              <div class="card card-stats mb-4 mb-xl-0">
                <div class="card-body">
                  <div class="row">
                    <div class="col">
                      <h5 class="card-title text-uppercase text-muted mb-0">Alugados</h5>
                             <?php
                include 'conexao/conexao.php';
                $sql = "SELECT COUNT(id_status_imovel) as quantidade FROM status_imovel WHERE status_imovel = 'Aluguel'";
                $busca = mysqli_query($conexao, $sql);
                $dados = mysqli_fetch_array($busca);
                $qtdaluguel = $dados['quantidade'];

            ?>
     
            
                <span class="h2 font-weight-bold mb-0"><?php echo $qtdaluguel ?></span>
                    </div>
                    <div class="col-auto">
                      <div class="icon icon-shape bg-yellow text-white rounded-circle shadow">
                        <i class="fas fa-users"></i>
                      </div>
                    </div>
                  </div>
                  <p class="mt-3 mb-0 text-muted text-sm">
                       <?php
                $sql3 = "SELECT SUM(valor_negocio)as valortotal FROM status_imovel WHERE status_imovel = 'Aluguel'";
                $query = mysqli_query($conexao, $sql3);
                $dados3 = mysqli_fetch_array($query);
                $totalAluguel = $dados3['valortotal'];
                $totalAluguel;
                $porcento = $totalAluguel * 0.10;
            ?> 
            <span class="text-success mr-2"><i class="fas fa-arrow-up"></i><?php echo number_format($porcento, 2, ',', '.') ?></span>
                    <span class="text-nowrap">Lucro Alugueis</span>
                  </p>
                </div>
              </div>
            </div>
            <div class="col-xl-3 col-lg-6">
              <div class="card card-stats mb-4 mb-xl-0">
                <div class="card-body">
                  <div class="row">
                    <div class="col">
                      <h5 class="card-title text-uppercase text-muted mb-0">Lucro Bruto</h5>
            <?php
                $totalbruto = $porcento + $total;
                
            ?>
                <span class="h2 font-weight-bold mb-0"><?php echo number_format($totalbruto, 2, ',', '.') ?></span>
                    </div>
                    <div class="col-auto">
                      <div class="icon icon-shape bg-info text-white rounded-circle shadow">
                        <i class="fas fa-percent"></i>
                      </div>
                    </div>
                  </div>
                  <p class="mt-3 mb-0 text-muted text-sm">
            <?php
            if($totalbruto > 0) {?>
                        <span class="text-success mr-2"><i class="fas fa-arrow-up"></i>Saldo Positivo</span>
            <?php } else {?>
                    <span class="text-danger mr-2"><i class="fas fa-arrow-down"></i>Saldo Negativo</span>
            <?php    }?>

                  </p>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

</body>
</html>

Diante disso, quero que alguém poste aqui uma sugestão contemplando os dois códigos, pois acredito que na primeira verificação usando AND ou WHERE eu estou acertando, mas o grande problema está na abertura da próxima página, que não estou conseguindo fazer. Acho que até checo a tabela, mas não estou conseguindo direcionar para a página certa.

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Para resolver esse problema criei essa tabela no MySQL:

CREATE TABLE `usuariox` (
  `id` int NOT NULL AUTO_INCREMENT,
  `usuariox` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `senhax` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `nivel` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
INSERT INTO `usuariox` VALUES (1,'zé ninguém','$2y$10$qtuNz1MSlzGwvKFikO6VFO1JQ9rdxBUpIyyYqeuGYPx8uZ9i16yMe',1),(2,'zé alguém','$2y$10$qtuNz1MSlzGwvKFikO6VFO1JQ9rdxBUpIyyYqeuGYPx8uZ9i16yMe',1),(3,'zé aluno','$2y$10$qtuNz1MSlzGwvKFikO6VFO1JQ9rdxBUpIyyYqeuGYPx8uZ9i16yMe',2),(4,'zé pai','$2y$10$qtuNz1MSlzGwvKFikO6VFO1JQ9rdxBUpIyyYqeuGYPx8uZ9i16yMe',3);

Eu defini a senha "1234" para todos eles assim:
 

teste.php

<?php
$mysqli=new mysqli("localhost","root","","astudy");
$senha=password_hash("1234",PASSWORD_DEFAULT);
$query=$mysqli->query("update usuariox set senhax='$senha'");

E finalmente eu fiz o meu login.php

<!--nivel 1 index.php, 2 aluno.php e 3 pai.php-->
<body style="width:50%;margin:0 auto"><div style=height:5%></div>
<form method=post>
  <input placeholder=usuario name=usuario required><p>
  <input placeholder=senha name=senha required><p>
  <input type=submit>
</form>
<?php
if(!isset($_POST['usuario'])){exit;}
session_start();
$mysqli=new mysqli("localhost","root","","astudy");
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$sql = "SELECT * FROM usuarioX WHERE usuarioX = '$usuario'";
$query = $mysqli->query("select * from usuariox where usuariox='$usuario'");
if(!$query->num_rows){echo "usuário não cadastrado!";exit;}
$row = $query->fetch_assoc();
$senhabd = $row['senhax'];
if(!password_verify($senha,$senhabd)){echo "senha não bate!";exit;}
$nivel=$row['nivel'];
$_SESSION['usuario']=$usuario;
$_SESSION['nivel']=$nivel;
if($nivel==1){echo "usuario nivel ".$_SESSION['nivel']." vai para index.php";exit;}
if($nivel==2){echo "usuario nivel ".$_SESSION['nivel']." vai para aluno.php";exit;}
if($nivel==3){echo "usuario nivel ".$_SESSION['nivel']." vai para professor.php";exit;}
?>

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...