Ir para conteúdo

Arquivado

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

Marcones Borges

Menu conforme nivel de acesso

Recommended Posts

Hey guys, :sweat_smile:

criei esse sistema de níveis de acesso aqui 'básico' como o @OmarF citou com switch, poderia ter usado o if mais enfim daria quase que no mesmo, não usei conexão com banco de dados(fiquei sem tempo kk foi sem msm..) apenas com sessões mesmo, da para da uma adaptada depois para conexão com banco de dados.

Um exemplo de como ficaria os níveis de acesso com login simples...

login.php:

<form method="post">
  <input name="nome" placeholder="Nome">
  <input name="nivel" placeholder="Numero de acesso"> 1 para usuario e 2 para admin
  <input type="submit" name="submit">
<form/>
<?php
  session_start();
  if(isset($_SESSION['nome']) && isset($_SESSION['nivel'])){ // Volta a home se tiver sessão criada;
    header('Location: home.php');
  }


  if(isset($_POST['submit'])){ // Ao enviar o form cria uma sessão;
    $_SESSION['nome'] = $_POST['nome'];
    $_SESSION['nivel'] = $_POST['nivel'];
    header('Location: home.php');
  }
?>

home.php:

<?php
	session_start();

	if(!isset($_SESSION['nome']) && !isset($_SESSION['nivel'])){
		header('Location: index.php');
	} // Ver se ta logado, se não volta home

	$nome = $_SESSION['nome'];
	$nivel = $_SESSION['nivel'];

		if($nivel == '1'){ // Nomeias os niveis de acesso pre-definidos
			$nivelName = 'Usuário Comum 1';
		}elseif($nivel == '2'){
			$nivelName = 'Usuário Administrativo';
		}else{
			$nivelName = "Usuário sem nivel de acesso";
		}
	
	switch($nivel){ // começa os casos para cada tipo de usuário...
		case 1:
			echo "Olá ".$nivelName.'<br>';
			echo "<a href='?logoff=off'>Menu 1 Comum</a><br>";
			echo "<a href='?logoff=off'>Menu 2 Comum</a><br>";
			echo "<a href='?logoff=off'>Menu 3 Comum</a><br>";
			echo "<a href='?logoff=off'>Menu 4 Comum</a><br>";
			break;
		case 2:
			echo "Olá ".$nivelName.'<br>';
			echo "<a href='?logoff=off'>Menu 1 Admin</a><br>";
			echo "<a href='?logoff=off'>Menu 2 Admin</a><br>";
			echo "<a href='?logoff=off'>Menu 3 Admin</a><br>";
			echo "<a href='?logoff=off'>Menu 4 Admin</a><br>";
			break;
		default:
			echo "Olá ".$nivelName.'<br>';
			echo "<a href='?logoff=off'>Menu 1 Sem Nivel</a><br>";
			echo "<a href='?logoff=off'>Menu 2 Sem Nivel</a><br>";
	}


	if(isset($_GET['logoff']) && $_GET['logoff'] == 'off'){ // clico no link para sair ele desloga e destroy a sessão..
		unset($_SESSION['nome']);
		unset($_SESSION['nivel']);
		session_destroy();
		header('Location: index.php');
	}

	echo '<br>Olá '.$nome." <a href='?logoff=off'>Sair</a>?";
?>

*Não sou um bom explicador :persevere:

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei que esse tópico é antigo, mas vamos aproveitar para evitar tópicos duplicados.

Hoje eu consegui montar assim:

Em cada pagina coloquei o cód abaixo onde identifico  o nível do usuário 

<?php
session_start();
$nivel = 2;
set_time_limit(0);
date_default_timezone_set('America/Sao_Paulo');
include 'adm/config.php';
include 'adm/functions.php';
include 'adm/menu.php';
include("adm/seguro.php");

?>

A pagina seguro que verifica as permissões está assim:

Ele verificar o nível que está na pagina que o usuário que acessar, por exemplo se na pagina estiver $nivel=2 e o usuário for nível 1 ele 

da a mensagem : Você não tem o nível de acesso para essa página

<?php

// QUANDO TENTANDO LOGAR
if(isset($_POST['acesso'])=="Logar") {

// VERIFICANDO SE USUÁRIO E SENHA ESTÃO VAZIOS
if(isset($_POST['usuario'])=="" || isset($_POST['senha'])=="") {
echo "Os dados de acesso devem ser preenchidos";
exit;
}

// LOGANDO E CRIANDO AS SESSIONS
$logar = mysqli_query($conexao,"SELECT usuario, senha, nivel FROM acesso WHERE usuario='".anti_injection($_POST['usuario'])."' AND senha='".anti_injection(md5($_POST['senha']))."' AND nivel='".anti_injection($nivel)."'");
if(mysqli_num_rows($logar) >= 1) {
$_SESSION['usua'] = $_POST['usuario'];
$_SESSION['senh'] = md5($_POST['senha']);
echo "<script>
alert('Acesso permitido');
location.href='index.php';
</script>";
} else {
echo "<script>
alert('Acesso restrito');
</script>";
}

}

// VERIFICANDO SE O NÍVEL DA PÁGINA É VÁLIDA PARA O USUÁRIO LOGADO
if(@$_SESSION['usua'] AND @$_SESSION['senh']) {
$verifica_nivel = mysqli_query($conexao,"SELECT usuario, senha, nivel FROM acesso WHERE usuario='".anti_injection($_SESSION['usua'])."' AND senha='".anti_injection($_SESSION['senh'])."' AND nivel='".anti_injection($nivel)."'");
if(mysqli_num_rows($verifica_nivel) >= 1) {
// ACESSO CORRETO
} else {
echo "<script>
alert('Você não tem o nível de acesso para essa página');
history.back();
</script>";
exit;
}
}

// CASO NÃO LOGADO, MOSTRA O FORMULÁRIO
if(!isset($_SESSION['usua']) OR !isset($_SESSION['senh']) OR $_SESSION['usua']=="" OR $_SESSION['senh']=="") {

?>

<?php
$qr=mysqli_query($conexao,"SELECT DISTINCT usuario FROM `acesso` ORDER BY `acesso`.`usuario` ASC");
if (mysqli_num_rows($qr)==0)
	echo "Adicione ao menos um Usuário";

else{
          }  ?>

 

Desse jeito funciona belezinha, só que queria ao invés de setar cada pagina com o nível, pegar esse nível no BD e mostrar menus diferentes.

Exemplo:

Se for nivel=1 ele mostra o include 'adm/menu1.php';

Se for nivel=2 ele mostra o include 'adm/menu2.php';

 

E tem um problema o nivel 1 é adm além das paginas que tem acesso ele também pode acessar as paginas do nivel 2 que é adm.

 

Alguém pode me dar uma luz como pode ser feito isso?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por juliosonic
      Boa noite..
      Estou desenvolvendo um site de https://www.maithunatantra.com.br/ e estou com um duvida sobre o menu de navegação da versão mobile.
      O menu que tem o dropdown "Terapeutas" e "Terapias" quando clico em cima ele expande como deve ser, mas quando clico denovo para recolher os submenus
      nao acontece nada.. segue o trecho do codigo do menu..
      <div class="collapse navbar-collapse" id="navbarsExample09">             <ul class="navbar-nav ml-auto">               <li class="nav-item  active"><a class="nav-link" href="index.html">Home</a></li>               <li class="nav-item  active"><a class="nav-link" href="about-us.html">Quem Somos</a></li>               <li class="nav-item dropdown1">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapeutas</a>                     <ul class="dropdown-menu">                         <li><a class="dropdown-item" href="terapeuta-julio-cezar.html">Julio Cezar</a></li>                         <li><a class="dropdown-item" href="terapeuta-pamela-priscila.html">Pamela Priscila</a></li>                     </ul>                                    </li>               <li class="nav-item dropdown">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapias</a>                     <ul class="dropdown-menu" aria-labelledby="dropdown01">                         <li><a class="dropdown-item" href="o-que-e-reiki.html">O que é Reiki</a></li>                         <li><a class="dropdown-item" href="beneficios-reiki.html">Benefícios do Reiki</a></li>                         <li><a class="dropdown-item" href="principios-reiki.html">Princípios do Reiki</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Reiki em Animais</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Estudos Sobre Reiki</a></li>                         <li><a class="dropdown-item" href="terapia-massagem-tantrica.html">Terapia Tântrica</a></li>                     </ul>               </li>               <li class="nav-item  active"><a class="nav-link" href="blog.html">Blog</a></li>                <li class="nav-item"><a class="nav-link" href="contato.html">Contato</a></li>             </ul>         </div>  
      Massagem Tantrica em Curitiba
      Tantra Curitiba
      Massagem Tântrica
      Tantra
      Julio Darshan

      Obrigado
      Att
      Julio Cezar
       
       
       
    • Por Felipe Medeiros
      Bom, criei um tema filho e o que aprendi é que para alterar qualquer coisa do tema filho eu preciso copiar o arquivo do tema pai o colocar dentro da pasta do tema filho.
       
      No meu caso, estou usando o tema "Astra" bem famosinho. O arquivo css que quero modificar não está dentro da pasta do tema pai, está em "wp-content/uploads/uag-plugin/assets/0/uag-css-10.css" sendo que o diretorio do tema pai é "wp-content/themes/Astra"
       
      O problema é o seguinte, preciso modificar a barra de pesquisa da pagina inicial, porem o inspetor de elementos do chrome ta acusando que esse arquivo é o responsavel por estilizar a barra de pesquisa. Será que isso tem a ver com "Cache de objetos", eu sei que o plugin liteSpeed Cache, AMP, Rank Math, todos eles tem essas paradas de criar arquivos css e js para tornar o site mais rapido.
    • Por Alessandro Bodão
      Fala galerinha, 
       
      Tenho um container com um título (h1) no cabeçalho do meu site, esse container ocupa metade da tela (50vw), e eu gostaria que esse título ocupasse toda a largura desse container, independente do seu tamanho ou do tamanho do monitor, de forma com que a palavra tenha exactamente o mesmo tamanho do container (vou anexar uma foto de exemplo). Já tentei todos os valores pra essa h1, como % e vw... mas nada parece fazer sentido.
       
       

    • Por FabianoSouza
      Gente, tenho as TRs da minha tabele já com os cantos arredondados (através das TDs first-child e last-child). Fiz dessa forma porque desconheço uma maneira de aplicar radius diretamente na TR.
       
      O problema é que ao colorir a TR com o over do CSS, perde-se a formatação do border radius das TDs e exibe a TR com os cantos quadrados.
       
      Preciso que os cantos fiquem arredondados mesmo ao passar o mouse sobre a TR.
       
      Como resolvo isso?
    • Por viniciusfroner
      Tenho um pequeno sistema de envio, estou utilizando o "PHPMailerAutoload". Após o usuário inserir as informações e clicar em enviar a mensagem é enviada com sucesso, o único problema é que apresentado ao usuário a seguinte mensagem:
      if ($enviado){ echo "E-mail enviado com sucesso!"; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $msg->ErrorInfo; } Acabei procurando e não achei como posso remover a mensagem "Error:"
×

Informação importante

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