Ir para conteúdo

POWERED BY:

Arquivado

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

Denis Vitonis

Login com tipos de niveis de acesso

Recommended Posts

OLA GALERA SOU INICIANTE NO PHP ESTOU COM UMA DUVIDA COMPLICADA SERÁ QUE ALGUEM PODE ME AJUDAR??

 

BOM CRIEI UM BANCO no PHPMYADMIN com nome vcsystem com as tabela usuario

 

contendo as colunas nome,senha,nivel.

 

até aqui tudo bem ok

 

fiz uma pagina de Login e senha metodo Post chamando o arquivo auth.php

 

ARQUIVO AUTH.PHP

-----------------------------------------------------------------------------------------------------------

<?php

// Recebemos os dados digitados pelo usuário

$nome = $_POST['nome'];

$senha = $_POST['senha'];

 

//Estabelecemos uma conexão com o banco de dados

//mysql_connect("Nome ou IP do servidor", "Usuario", "Senha");

$conn = mysql_connect("localhost", "root", "") or exit("Impossivel conectar");

//caso a conexão seja estabelecida corretamente seleciona o banco de dados a ser usado

$conectdb = mysql_select_db("vcsystem", $conn);

 

 

//Criamos o comando que efetua a busca e que vai procurar o login do usuario no banco

$sql = "SELECT id,nome,nivel FROM usuario WHERE nome = '$nome' AND senha = '$senha' LIMIT 1";

 

//Executamos o comando a variável $rs é a variável

$rs = mysql_query($sql, $conn);

//Retornamos o numero de linhas afetadas

$num = mysql_num_rows($rs);

 

if($num > 0)

{

//Retorna o resultado do banco num array

$rst = mysql_fetch_array($rs);

$id = $rst["id"];

$nome = $rst["nome"];

$senha = $rst["senha"];

$nivel = $rst["nivel"];

 

//inicia sessao

session_start();

//guarda os dados na sessão

$_SESSION["id"] = $id;

$_SESSION["nome"] = $nome;

$_SESSION["senha"] = $senha;

$_SESSION["nivel"] = $nivel;

 

require_once('validasessao.php');

 

}

else

{

 

mysql_close($conn);

 

//Caso nenhuma linha seja retornada emite o alerta e retorna

 

 

echo "<meta http-equiv='refresh' content='0;URL=chamada2.php'>";

}

 

-------------------------------------------------------------------------------------------

 

?>

 

ARQUIVO validasessao.php

 

 

<?php

switch ( $nivel ) {

case "1": //admin

header("Location: painel.php");

break;

case "2": //user

header("Location: painel2.php");

break;

default: //sem nivel

session_destroy();

session_unset();

header("Location: chamada2.php");

 

}

 

?>

 

----------------------------------------------------------------------------------------------------------

 

Arquivos painel.php (para o login admin)

 

 

<?php

 

// A sessão precisa ser iniciada em cada página diferente

if (!isset($_SESSION)){ session_start();

 

$nome= $_SESSION["nome"];

$senha= $_SESSION["senha"];

$nivel=$_SESSION["nivel"] ;

print_r($_SESSION);

$nivel_necessario = 1;

echo "pagina admin";

// Verifica se não há a variável da sessão que identifica o usuário

if (!isset($_SESSION['nome']) OR ($_SESSION['nivel'] != $nivel_necessario)) {

// Destrói a sessão por segurança

session_destroy();

// Redireciona o visitante de volta pro login

header("Location: chamada.php"); exit;

}}

 

 

?>

 

-----------------------------------------------------------------------------------------------------------------

 

Arquivos painel2.php (para o login admin)

 

 

<?php

 

// A sessão precisa ser iniciada em cada página diferente

if (!isset($_SESSION)){ session_start();

$nome= $_SESSION["nome"];

$senha= $_SESSION["senha"];

$nivel=$_SESSION["nivel"] ;

$nivel_necessario = 2;

echo "area usuario";

// Verifica se não há a variável da sessão que identifica o usuário

if (!isset($_SESSION['nome']) OR ($_SESSION['nivel'] != $nivel_necessario)) {

// Destrói a sessão por segurança

session_destroy();

// Redireciona o visitante de volta pro login

header("Location: chamada.php"); exit;

}}

 

?>

 

OK TUDO FUNCIONA quando eu logo com usuario de nivel 2 ele me redireciona para painel2.php(correto) mas se eu mudo o nome do endereço da URL direto no browser painel.php e ele não bloqueia a pagina. Ou seja usuario nivel 2 so era para acessar paginas nivel2 .

 

 

Quebrei a cabeça e nao consegui resolver.

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.