Ir para conteúdo

POWERED BY:

Arquivado

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

Lucas Corrêa

Verificando Nível de Usuário

Recommended Posts

Olá, sou novo por aqui, é meu primeiro post, li as regras, porém se estiver fazendo algo errado por favor me avisem.

 

Tenho um sistema de logins, porém preciso que ele tenha níveis de acesso, até ai tudo bem.

 

Preciso verificar se o nível do usuário permite acesso a página que ele esta acessando,

em todas as páginas eu tenho um verificador para saber se o usuário se logou, vou postar abaixo, gostaria de saber

se nesse próprio verificador consigo validar o nível do usuário tmb, assim não preciso mexer em todas as páginas.

 

Código do verificador que já existe em todas as páginas:

 

<?php
session_start();
if (!isset($_SESSION['autenticado'])){
	unset($_SESSION);
	session_destroy();


?>
<html>
<script language=javascript>
top.location.href = "../index.php";
</script>
</html>
<?php
exit();
}
?>

 

Se não tiver como usar o mesmo arquivo, qual é a melhor forma e mais fácil de verificar qual é o nível do usuário no BD e liberar acesso a página?

 

Img da tabela do BD

 

bd.jpg

 

Qm puder ajudar agradeço.

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando o usuário logar, registre o nível dele em uma session, por ex. $_SESSION["nivel"];

 

Antes do include de verificação, em cada página você coloca uma variável com o nível da página..

 

ex..

 


<?php

$nivel_pag = 1;
include('verifica.php');

?>

<!-- head, body, códigos etc -->

 

E no verifica, crie outro if..

 

<?php
       session_start();
       if (!isset($_SESSION['autenticado'])){
               unset($_SESSION);
               session_destroy();


?>
<html>
<script language=javascript>
top.location.href = "../index.php";
</script>
</html>
<?php
exit();
       }

$nivel == $_SESSION["nivel"];

if($nivel != $nivel_pag) { ?>

 <script language=javascript>
top.location.href = "../index.php";
</script>


<?php } ?>

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não deu muito certo, pois indiferente do login que eu use, ele me redireciona para index.php, ele nem chega abrir a página na qual defini o nivel como 1.

 

Você criou a session no login? $_SESSION["nivel"] ???

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, criei veja o código do login:

<?php

session_start();
if(isset($_GET['acao'])){

if ($_GET['acao'] == "logar")
{


	include ('include/conexao.inc.php');

	$senha_dig  = $_POST['senha'];
	$senha_dig = trim($senha_dig);
	$usuario_dig = $_POST['login'];
	$usuario_dig = trim($usuario_dig);	



	$sql = "SELECT senha, login FROM usuarios WHERE login='$usuario_dig' AND ativo='1'";
	$resultado = mysql_query($sql);
	if ($senha_bd = mysql_fetch_array($resultado))
	{

		if ($senha_dig == $senha_bd['senha'])
		{  

			$_SESSION['autenticado'] = true;				
			$_SESSION['login'] = $senha_bd['login'];
			$_SESSION["nivel"];
                 <script language="JavaScript">
                         window.location="home.php";
                 </script>
		<?php }
	}	
	else
	{

	?>		

		<script language="javascript"> alert("Usuário ou senha incorretos!");</script>
	<?php }
}
}	
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops..

 

Não seria:

 

<?php

session_start();
if(isset($_GET['acao'])){

       if ($_GET['acao'] == "logar")
       {


               include ('include/conexao.inc.php');

               $senha_dig  = $_POST['senha'];
               $senha_dig = trim($senha_dig);
               $usuario_dig = $_POST['login'];
               $usuario_dig = trim($usuario_dig);      



               $sql = "SELECT senha, login, nivel FROM usuarios WHERE login='$usuario_dig' AND ativo='1'";
               $resultado = mysql_query($sql);
               if ($senha_bd = mysql_fetch_array($resultado))
               {

                       if ($senha_dig == $senha_bd['senha'])
                       {  

                               $_SESSION['autenticado'] = true;                                
                               $_SESSION['login'] = $senha_bd['login'];
                               $_SESSION["nivel"] = $senha_bd['nivel']; // atribuir o valor a ela...  e você esqueceu de fechar a tag php

							?>

                 <script language="JavaScript">
                         window.location="home.php";
                 </script>

                       <?php }
               }       
               else
               {

               ?>              

                       <script language="javascript"> alert("Usuário ou senha incorretos!");</script>
               <?php }
       }
}       
?>

 

?

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei porém mesmo assim ele continua me redirecionando para index.php

 

coloquei o código abaixo na página inicial após o login, ou seja se o login não estiver com o nivel 1 ele n entra nem na primeira página, volta pro login.

 

<?php
$nivel_pag = 1;
 include("include/verifica_aut.inc.php");

?>

 

Depois alterei o verificador

 

<?php
       session_start();
       if (!isset($_SESSION['autenticado'])){
               unset($_SESSION);
               session_destroy();


?>
<html>
<script language=javascript>
top.location.href = "../index.php";
</script>
</html>
<?php
exit();
       }

$nivel == $_SESSION["nivel"];

if($nivel != $nivel_pag) { ?>

        <script language=javascript>
top.location.href = "../index.php";
</script>


       <?php } ?>

 

e então modifiquei como você falou o login

 

<?php

session_start();
if(isset($_GET['acao'])){

if ($_GET['acao'] == "logar")
{


	include ('include/conexao.inc.php');

	$senha_dig  = $_POST['senha'];
	$senha_dig = trim($senha_dig);
	$usuario_dig = $_POST['login'];
	$usuario_dig = trim($usuario_dig);	



	$sql = "SELECT senha, login FROM usuarios WHERE login='$usuario_dig' AND ativo='1'";
	$resultado = mysql_query($sql);
	if ($senha_bd = mysql_fetch_array($resultado))
	{

		if ($senha_dig == $senha_bd['senha'])
		{  

			$_SESSION['autenticado'] = true;				
			$_SESSION['login'] = $senha_bd['login'];
			$_SESSION["nivel"] = $nivel_user['nivel'];
			?>
                 <script language="JavaScript">
                         window.location="home.php";
                 </script>
		<?php }
	}	
	else
	{

	?>		

		<script language="javascript"> alert("Usuário ou senha incorretos!");</script>
	<?php }
}
}	
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não amigo..

 

Você alterou..

 

$_SESSION["nivel"] = $nivel_user['nivel'];

 

é para continuar:

$_SESSION["nivel"] = $senha_bd['nivel']; 

 

Se a sua chamada no banco é com senha_bd : $senha_bd = mysql_fetch_array($resultado)

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm..mesmo assim ele não vai, ele me redireciona para a pagina index.php, porém não é a index do login, ele volta uma pasta aonde n tem index..

 

veja o link sistema

 

Veja só, não pode ser feito de uma forma mais simples? tipo eu coloco um include em cada página do tipo "se NIVEL do usuário tal for 1 então o usuário pode ficar na página, se for diferente a 1 redireciona para página de login ou joga um alert na tela e n abre a página..

 

Até pq o Admin vai ter que definir os níveis pelo sistema...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você percebeu que você tbm alterou o SELECT que lhe enviei?

 

errado:

$sql = "SELECT senha, login FROM usuarios WHERE login='$usuario_dig' AND ativo='1'";

 

tem que selecionar o nivel tbm..

 

correto:

$sql = "SELECT senha, login, nivel FROM usuarios WHERE login='$usuario_dig' AND ativo='1'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

humm..agora foii não me atentei na SELECT, agora me tire uma dúvida se eu quiser liberar acesso para os dois níveis em uma determinada página?

 

tentei fazer

<?php
$nivel_pag = 1 and 2 ;
 include("include/verifica_aut.inc.php");

?>

 

e tmb tentei fazer

 

<?php
$nivel_pag = 1,2 ;
 include("include/verifica_aut.inc.php");

?>

 

 

flw

 

Veja só,

 

na primeira página depois do login coloquei o seguinte

 

<?php
$nivel_pag = 0<2;
 include("include/verifica_aut.inc.php");

?>

 

beleza, os dois logins entram na página porém em outra página fiz o seguinte

 

<?php

$nivel_pag = 0<1;
include("../include/verifica_aut.inc.php");

?>

 

os dois acessam e só o admin tinha q acessar..como posso fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente...

 

<?php

$nivel_pag = 1;
include("../include/verifica_aut.inc.php");

?>

 

Na do admin coloca só o número 1..

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente...

 

<?php

$nivel_pag = 1;
include("../include/verifica_aut.inc.php");

?>

 

Na do admin coloca só o número 1..

 

Abraço.

 

Cara muito bom ...valew pela ajuda mesmo deu certo, só tenho uma ultima dúvida, caso eu crie mais níveis de usuários tipo nível 1,2,3 e 4

 

como ficaria o code se eu quisesse por exemplo liberar acesso para o nível 1,3 e 4? como separo esses numeros?

 

 

<?php

$nivel_pag = 1;

include("include/verifica_aut.inc.php");

 

?>

 

vlw

 

Cara muito bom ...valew pela ajuda mesmo deu certo, só tenho uma ultima dúvida, caso eu crie mais níveis de usuários tipo nível 1,2,3 e 4

 

como ficaria o code se eu quisesse por exemplo liberar acesso para o nível 1,3 e 4? como separo esses numeros?

 

 

<?php

$nivel_pag = 1;

include("include/verifica_aut.inc.php");

 

?>

 

vlw

 

 

Opaa, resolvi aqui n sei se esta certo mas funcionou, simples mente repeti o o código embaixo..

 

<?php

$nivel_pag = 1;
$nivel_pag = 2;
include("../include/verifica_aut.inc.php");

?>

 

pode ser assim? tem alguma outra forma?

Compartilhar este post


Link para o post
Compartilhar em outros sites
pode ser assim? tem alguma outra forma?

 

Errado..

 

Nesse caso $nivel_pag perde seu valor..

 

Bom, como você irá ter áreas assim, então vamos alterar um simples detalhe.

 

ao invés de declarar:

$nivel_pag = 1;

 

declare com arrays (no caso do seu exemplo)

$nivel_pag = array(1,3,4);

 

E na verificação vai ficar assim:

<?php
       session_start();

	$nivel == $_SESSION["nivel"];

       if (!isset($_SESSION['autenticado']) || !in_array($nivel, $nivel_pag)){
               unset($_SESSION);
               session_destroy();


?>
<html>
<script language=javascript>
top.location.href = "../index.php";
</script>
</html>
<?php
exit();
       }
?>

 

Então toda vez que quiser que certo nível tenha acesso a determinada página, adicione o número dele... ex:

Para os níveis: 4, 5, 1, 2 terem acesso a certa página:

$nivel_pag = array(4,5,1,2);

 

Abraço.

 

Correção..

 

Nesse caso $nivel_pag perde seu valor..

 

Nesse caso $nivel_pag perde seu valor inicial..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Errado..

 

Nesse caso $nivel_pag perde seu valor..

 

Bom, como você irá ter áreas assim, então vamos alterar um simples detalhe.

 

ao invés de declarar:

$nivel_pag = 1;

 

declare com arrays (no caso do seu exemplo)

$nivel_pag = array(1,3,4);

 

E na verificação vai ficar assim:

<?php
       session_start();

	$nivel == $_SESSION["nivel"];

       if (!isset($_SESSION['autenticado']) || !in_array($nivel, $nivel_pag)){
               unset($_SESSION);
               session_destroy();


?>
<html>
<script language=javascript>
top.location.href = "../index.php";
</script>
</html>
<?php
exit();
       }
?>

 

Então toda vez que quiser que certo nível tenha acesso a determinada página, adicione o número dele... ex:

Para os níveis: 4, 5, 1, 2 terem acesso a certa página:

$nivel_pag = array(4,5,1,2);

 

Abraço.

 

 

Ok deu certo, porém fiz uma alteração, tirei o session_destroy(); ,porque depois que ele verifica que o nível não tem acesso, eu mando ele redirecionar o usuário pra dentro do próprio sistema, ou seja ele n pode perder a sessão.

tmb coloquei um alert, assim o usuário fica ciente do que aconteceu.

 

<?php
       session_start();

               $nivel == $_SESSION["nivel"];

       if (!isset($_SESSION['autenticado']) || !in_array($nivel, $nivel_pag)){
               unset($_SESSION);



?>
<html>
<script language="javascript"> alert("Usuário sem permissão de acesso!");</script>
<script language=javascript>
top.location.href = "http://www.agenciago.com.br/sites/tuka_sistema/home.php";
</script>
</html>
<?php
exit();
       }
?>

 

Aliás, você faz trabalhos freelancer? tenho algumas coisas pra fazer..se sim me passe seus contatos..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso de mais uma ajuda, se alguem conseguir me dar uma luz agradeço, estou fazendo alguma coisa errada e deve ser algo simples vejam:

 

Conforme o nosso amigo acima me ajudou deu tudo certo fiz algumas alterações e ficou bacana, agora o problema é o seguinte vou colar o code abaixo pra deixar mais claro..

 

Com esse código eu libero acesso do admin na página que eu colocar esse código...

 

<?php

$login_pag = array(admin);



 include("include/verifica_aut.inc.php");

?>

 

Com esse código se faz a validação:

 

<?php
       session_start();

               $login == $_SESSION["login"];

       if (!isset($_SESSION['autenticado']) || !in_array($login, $login_pag)){
               unset($_SESSION);



?>
<html>
<script language="javascript"> alert("Usuário sem permissão de acesso!");</script>
<script language=javascript>
top.location.href = "/home.php";
</script>
</html>
<?php
exit();
       }
?>

 

Bom oque eu preciso fazer que não estou conseguindo ( comentei no codígo)

 

<?php

$login_pag = array(admin); //essa informação dentro do array "(admin)" preciso que seja selecionado do banco de dados, de uma coluna chamada "acesso01"



 include("include/verifica_aut.inc.php");

?>

 

Vou postar aqui em baixo um teste que eu fiz e n deu certo

 

<?php
    include("../include/conexao.inc.php")

$sql = "SELECT * FROM usuarios  ORDER BY id DESC";
	   $resultado = mysql_query($sql);
	   while ($linha = mysql_fetch_array($resultado)) {
	   $id = $linha['id'];
	   $nome = $linha['acesso01'];


$login_pag = array(echo '$nome';);



 include("include/verifica_aut.inc.php");

?>

 

qnd testei houve um erro na linha $sql = "SELECT * FROM usuarios ORDER BY id DESC";

 

Alguem sabe me ajudar como faço isso?

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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