• 0
Sign in to follow this  
bush

Sistema De Login

Question

Boa tarde !!!

Pessoal seguinte, eu tenho um sistema que conten 3 niveis de acesso ou seja user ,admin e master.

poren eu estou com um problema não consigo fazer com que o usuario do nivel user não consiga acessar as paginas do nivel master.

Se o usuario master passar o link para o usuario normal ele consegui acessar as paginas.

Tem algun modo de bloquear isso?

Se alguen puder me ajuda eu posto o codigo aqui..

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Assumindo que você esteja controlando isso por sessões, faça assim, na hora que o cara fizer login, veja que tipo de usuário ele é... dai dependendo do tipo de usuário é criado uma sessão com o nome diferente, por exemplo, você pode ter 3 tipos de sessões:

$_SESSION['admin']; -> para administradores

$_SESSION['master']; -> para nível master

$_SESSION['user']; -> para usuário...

Nas páginas você verifica que tipo de sessão o cara tem e se aquela sessão pode ser usada para acessar a página em questão... por exemplo se o cara tiver setada uma $_SESSION['master'] ou $_SESSION['user'] e tentar acessar a página admin, ele não consegue, pois não terá a $_SESSION['admin']

O que deve estar acontecendo com o seu sistema é que só registrado apenas um tipo de $_SESSION que diz que o cara fez login, mas não guarda qual o tipo de login...

Uma outra alternativa, que dá quase na mesma é criar uma session que guarde o nível do cara e dai você confere esse nível antes de dar acesso a página pro cara...

Share this post


Link to post
Share on other sites
  • 0

na pagina login.php tenho esse codigo montando a sessão.

$_SESSION["id_usuario"] = $dados["id"];

$_SESSION["nome_usuario"] = stripslashes($dados["nome"]);

$_SESSION["permissao"] = $dados["postar"];

$_SESSION["status"] = $dados["status"];

header("Location: index2.php");

exit;

}

E na pagina que ele é jogado por ex que no caso é index2.php

está assim:

if($_SESSION["permissao"] == "0")

{

echo "Prezado usuario você está desativado em nosso sistema por algum motivo de erro no cadastro. favor se recastrar!";

echo " <a href=\"atualiza_cadastro/index.html\">Recadastrar</a>\n";

}

if($_SESSION["permissao"] == "1")

{

include ("navegacaouser.php");

include ("saudacao_user.php");

include ("comunicados_user.php");

include ("noticia_user.php");

}

if($_SESSION["permissao"] == "2")

{

include ("navegacaodc.php");

include ("saudacao_dc.php");

include ("comunicados_dc.php");

include ("noticia_dc.php");

}

if($_SESSION["permissao"] == "3")

{

include ("navegacaoadmin.php");

include ("menu.php");

include("pgadmin.php");

}

Nesse caso é so eu acrencentar um campo no verifica.php que esta assim:

if(!isset($_SESSION["id_usuario"]) || !isset($_SESSION["nome_usuario"]))

{

com o campo permissão ?

Share this post


Link to post
Share on other sites
  • 0

O verifica é chamado em todas as páginas?

Você tem que verificar a permissão do usuário em cada página que ele acessar...

Share this post


Link to post
Share on other sites
  • 0

Sim o verifica.php é requirido em todas as paginas.

então é so eu acrescentar assim:

<?php

// Inicia sessões

session_start();

// Verifica se existe os dados da sessão de login

if(!isset($_SESSION["id_usuario"]) || !isset($_SESSION["nome_usuario"])||!isset($_SESSION["permissão"]))

{

// Usuário não logado! Redireciona para a página de login

header("Location: erro.html");

exit;

}

?>

Uma duvida !

Desse modo as paginas que tão na pagina que tão liberadas apenas para o nivel master os outros não acessan ?

mesmo passando o link?

tipo: eu criei uma unica pagina e coloquei isso :

if($_SESSION["permissao"] == "0")

{

echo "Prezado usuario você está desativado em nosso sistema por algum motivo de erro no cadastro. favor se recastrar!";

echo " <a href=\"atualiza_cadastro/index.html\">Recadastrar</a>\n";

}

if($_SESSION["permissao"] == "1")

{

include ("navegacaouser.php");

include ("saudacao_user.php");

include ("comunicados_user.php");

include ("noticia_user.php");

}

if($_SESSION["permissao"] == "2")

{

include ("navegacaodc.php");

include ("saudacao_dc.php");

include ("comunicados_dc.php");

include ("noticia_dc.php");

}

if($_SESSION["permissao"] == "3")

{

include ("navegacaoadmin.php");

include ("menu.php");

include("pgadmin.php");

}

de modo que aparece na mesmo pagina os includes de cada nivel.

Ai eu colocando a permissão na sessão os outros niveis não acessan se outros passarem os links ?

Share this post


Link to post
Share on other sites
  • 0

está.. mas acontece que você vai ter que fazer um controle em cada página individualmente, então... nas páginas do admin, por exemplo você coloca:

if(!isset($_SESSION["admin"]))

{

header("Location: erro.html");

exit;

}else{

e assim por diante, a verificação vai ter que ser feito dentro do próprio arquivo da página...

Share this post


Link to post
Share on other sites
  • 0

Eserra coloquei assim nas paginas;

<?php

// Verificador de sessão

require "verifica.php";

if(!isset($_SESSION["3"])

{

header("Location: erro.html");

exit;

}else{

?> mais deu esse erro:

Parse error: parse error in c:\arquivos de programas\easyphp1-8\www\roud14\teste.php on line 6

onde você colocou admin eu coloquei o nivel do usuario que no meu caso é 3 para admin.

você sabe me dizer o que to fazendo errado?

Share this post


Link to post
Share on other sites
  • 0

Tá faltando um ):

if(!isset($_SESSION["3"])

if(!isset($_SESSION["3"]))

Share this post


Link to post
Share on other sites
  • 0

Só complementado o que disse o ESERRA o include simplesmenta funciona como um copiar e colar, ele copia o que está no .php e cola ali no mesmo local onde foi chamado, nada impede que alguém use diretamente o endereço e acesse, por isso é importante que tenha a verificação em toda página que deve ser autenticada.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this