Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael Freitas

Exibir página somente para usuarios logados

Recommended Posts

Boa noite galera!

 

Estou precisando de uma força, seguinte:

Eu tenho um sisteminha de login e senha funcionando normalmente. Porém, a página que seria "restrita somente à usuários logado" está acessível para qualquer um, se esse tentar acessar pela url.

 

Como faço pra restringir aquela página somente para quem estiver logado. Caso não esteja, direcionar para a página de login novamente.

 

Segue o código:

<?php
	session_start();	
	//Incluindo a conexão com banco de dados
	include_once("conexao.php");	
	//O campo usuário e senha preenchido entra no if para validar
	if((isset($_POST['email'])) && (isset($_POST['senha']))){
		$usuario = mysqli_real_escape_string($conn, $_POST['email']); //Escapar de caracteres especiais, como aspas, prevenindo SQL injection
		$senha = mysqli_real_escape_string($conn, $_POST['senha']);
		$senha = md5($senha);
			
		//Buscar na tabela usuario o usuário que corresponde com os dados digitado no formulário
		$result_usuario = "SELECT * FROM usuarios WHERE email = '$usuario' && senha = '$senha' LIMIT 1";
		$resultado_usuario = mysqli_query($conn, $result_usuario);
		$resultado = mysqli_fetch_assoc($resultado_usuario);
		
		//Encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
		if(isset($resultado)){
			$_SESSION['usuarioId'] = $resultado['id'];
			$_SESSION['usuarioNome'] = $resultado['nome'];
			$_SESSION['usuarioNiveisAcessoId'] = $resultado['niveis_acesso_id'];
			$_SESSION['usuarioEmail'] = $resultado['email'];
			if($_SESSION['usuarioNiveisAcessoId'] == "1"){
				header("Location: administrativo.php");
			}elseif($_SESSION['usuarioNiveisAcessoId'] == "2"){
				header("Location: colaborador.php");
			}else{
				header("Location: cliente.php");
			}
		//Não foi encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
		//redireciona o usuario para a página de login
		}else{	
			//Váriavel global recebendo a mensagem de erro
			$_SESSION['loginErro'] = "Usuário ou senha Inválido";
			header("Location: index.php");
		}
	//O campo usuário e senha não preenchido entra no else e redireciona o usuário para a página de login
	}else{
		$_SESSION['loginErro'] = "Usuário ou senha inválido";
		header("Location: index.php");
	}
?>

Ainda estou começando no PHP,  quem puder dar uma força, agradeço! =)

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, se você já criou a SESSION após o usuário logar, fica fácil. Agora, na página que você quer restringir, você só precisar verificar se a SESSION existe, ex:

 

session_start();
if(!isset($_SESSION['login']) AND !isset($_SESSION['senha'])){
	header("Location:index.php");
}

Adicione no topo da página a verificação, pode adicionar isso num método e chamar também, assim se precisar restringir varias páginas, só chamar o método. Só adaptar para o seu projeto.

 

É uma forma simples e funcional.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola, completando o comentário do nosso colega acima. Crie uma página em php tipo ---> verifica_login.php

E adicione o código Como nesse exemplo:

 

<?php
session_start();
if(!$_SESSION['usuario']) {
    header('Location: index.php');
    exit();
}
?>

E toda pagina que precisara restringir adicione no topo

 

<?php
session_start();
include('verifica_login.php');
?>

 

Espero ter ajudado

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ment0r
      Boa tarde à todos.
      Pessoal, estou com o seguinte problema: preciso imprimir uma ficha mensal de trabalho, mas quando vou imprimir, a página para impressão sai "cortada".
       

       
      A imagem acima representa a ficha que preciso imprimir, está tudo ok com essa (tirei o cabeçalho, pois não vinha ao caso)
       

       
      Vejam como fica na impressão: com aproximadamente 2/3 da largura.
       
      <style> body { width: 100%; height: 100%; margin: 0; padding: 0; background-color: #FAFAFA; } * { box-sizing: border-box; -moz-box-sizing: border-box; } .page { width: 210mm; min-height: 297mm; padding: 4mm; margin: 1mm auto; border: 1px #D3D3D3 solid; border-radius: 5px; background: white; box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); } /*.subpage { padding: 0.5cm; border: 0px red solid; height: 257mm; outline: 2cm #FFEAEA solid; }*/ .cliente { margin-top: 30px; font-size: 20px; } th {font-size: 14px; } td {font-size: 12px; } .logo {height: 64px; margin: 20px 0px 0px 20px;} .font-cabecalho {font-size: 12px; margin-left: 20px; text-align: center; margin: 20px 0px 0px 20px;} @page { width: 100%; height: 100%; margin: 0; padding: 0; } @media print { html, body { width: 210mm; height: 297mm; } .page { margin: 0; border: initial; border-radius: initial; width: initial; min-height: initial; box-shadow: initial; background: initial; page-break-after: always; } } </style> Código CSS da página.
       
      O que pode ser? Como faço pra deixar a página de impressão igual à página PHP? Obrigado desde já à todos.

      Um abraço.
       
    • Por Kefatif
      Prezados, bom dia.
       
      Tenho uns um sistema com uns relatórios em PDF na pasta do meu domínio onde chamo pelo comando abaixo:

                 
      <div class="row">             <div class="col-md-4 img-portfolio">                 <a href="relatorios/teste.pdf" target="_blank">                 <img class="img-responsive img-hover" src="../img/jan-700x400.jpg" alt=""></a><h3>                 <center><a href="relatorios-teste/relatorios-producao.php">Janeiro/2021</a></center></h3>             </div>  
      Mas se uma pessoa acessar o PDF, copiar o link e enviar para uma outra pessoa que não tem acesso ao sistema, essa pessoa não autorizada terá acesso a esses relatórios, existe alguma forma para restringir esse acesso?
       
      Uso a autenticação da seguinte forma.
       
      Arquivo "Autenticação":
       
      <?php session_start(); //se não(!) existir a sessao login if(!isset($_SESSION["nome"])){ session_destroy(); $msg = "Acesso negado!"; header("location:../login.php?msg=".$msg); }elseif( $_SESSION["perfil"] != 'relatorios' ){ $msg = "Acesso negado!"; header("location:../painel.php?msg=".$msg); } ?>  
       
      Agradeço a todos desde já.
    • Por fideles
      Fala pessoal, como anda as coisas?
       
      Meu conhecimento em JS e quase neutro, conheço algo, mais talvez não o suficiente para o que eu precise, por isso venho pedir ajuda a vocês,
       
      Tenho um pequeno programinha, simples mesmo que tem 4 areas (Administração, Compras, Financeiro, Almoxarifado).
       
      Quem fica na ADM solicita algo,  compras visualiza e da um "ok" e o financeiro tbm tem que dar um "ok" e no final, o almoxarifado dá um "Processo Concluido" (está parte está ok, funcionando, sem erro)
       
      Meu problema seria que quem está no almoxarifado consegue clicar no botão "Processo Concluido" mesmo o pessoal de compras e financeiro não dando um "ok" na solicitação ou ele tbm consegue dar "Processo Concluido" se um ou outro dar um "ok". Precisaria que ele so conseguisse dar "Processo Concluido" se os dois darem o "ok", se so um dar "ok" ele não pode dar "Processo Concluido".
       
      Alguém consegue pelo menos me dar um norte para que eu possa dar continuidade? Já tentei em PHP e nada.
       
    • Por fideles
      Pessoal, tudo bem?
       
      Tenho uma pagina onde as pessoas me enviam NF para faturamento.
       
      Me perguntaram, é possível que essa pagina funcione por exemplo, somente os 15 primeiros dias do mês e os últimos 15 dias, elas permaneça fechada ou direcione para outra pagina mostrando "Período de envio fechado" (exibir a mensagem é tranquilo).
       
      Alguém imagina algo? Não consegui, sendo sincero mesmo.
       
    • Por netocazuza
      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.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.