-
Posts
2 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Marcelocjbh
-
-
Olá pessoal!
Sou iniciante na linguagem. Estou criando um CRUD para o serviço, onde terei 3 niveis de acessos.NÍVEIS:
1 - Administrador (Cadastra e exclui e edita as informações)
2 - Colaborador (Apenas cadastras informações)
3 - Usuario (Apenas lê as informações)
Adicionei um script onde ao logar, o sistema redireciona conforme o nível:
Parte do codigo que redireciona: // O usuário está logado $_SESSION['logado'] = true; $_SESSION['nome_usuario'] = $fetch_usuario['user_name']; $_SESSION['usuario'] = $fetch_usuario['user']; $_SESSION['user_id'] = $fetch_usuario['user_id']; $_SESSION['nivel'] = $fetch_usuario['nivel']; if($_SESSION['nivel'] == "1"){ header("Location: administrador.php"); }elseif($_SESSION['nivel'] == "2"){ header("Location: colaborador.php"); }elseif($_SESSION['nivel'] == "3"){ header("Location: usuario.php"); }
VERIFICA_LOGIN.php <?php // Verifica se estamos conectados ao BD if ( ! isset( $conexao_pdo ) || ! is_object( $conexao_pdo ) ) { exit('Erro na conexão com o banco de dados.'); } // Une $_SESSION e $POST para verificação if ( isset( $_POST ) && ! empty( $_POST ) ) { $dados_usuario = $_POST; } else { $dados_usuario = $_SESSION; } // Verifica se os campos de usuário e senha existem // E se não estão em branco if ( isset ( $dados_usuario['usuario'] ) && isset ( $dados_usuario['senha'] ) && ! empty ( $dados_usuario['usuario'] ) && ! empty ( $dados_usuario['senha'] ) ) { // Faz a consulta do nome de usuário na base de dados $pdo_checa_user = $conexao_pdo->prepare('SELECT * FROM usuarios WHERE user = ? LIMIT 1'); $verifica_pdo = $pdo_checa_user->execute( array( $dados_usuario['usuario'] ) ); // Verifica se a consulta foi realizada com sucesso if ( ! $verifica_pdo ) { $erro = $pdo_checa_user->errorInfo(); exit( $erro[2] ); } // Busca os dados da linha encontrada $fetch_usuario = $pdo_checa_user->fetch(); // Verifica se a senha do usuário está correta if ( crypt( $dados_usuario['senha'], $fetch_usuario['user_password'] ) === $fetch_usuario['user_password'] ) { // O usuário está logado $_SESSION['logado'] = true; $_SESSION['nome_usuario'] = $fetch_usuario['user_name']; $_SESSION['usuario'] = $fetch_usuario['user']; $_SESSION['user_id'] = $fetch_usuario['user_id']; $_SESSION['nivel'] = $fetch_usuario['nivel']; if($_SESSION['nivel'] == "1"){ header("Location: administrador.php"); }elseif($_SESSION['nivel'] == "2"){ header("Location: colaborador.php"); }elseif($_SESSION['nivel'] == "3"){ header("Location: usuario.php"); } } else { // Continua deslogado $_SESSION['logado'] = false; // Preenche o erro para o usuário $_SESSION['login_erro'] = 'Usuário ou senha inválidos'; } } ?>
O problema é que quando eu logo como por exemplo como nível 3 (usuario.php), se eu apagar o usuario.php apos a barra e colocar administrador.php ou colaborador.php, o sistema aceita.
Haveria uma maneira de barrar isto onde o usuário somente teria acesso na pagina respectiva ao seu nível de acesso?
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Sessions diferentes para cada nível de acesso
em Web e banco de dados
Postado
Coloquei aqui conforme sua orientação e deu certo.
Adicionei isto nos cabeçalhos de cada pagina, informando o nível que necessito. Foi perfeito.
Muito obrigado pela orientação!
-----------------------------------------------------------
Vou realizar as devidas mudanças conforme você me orientou. Muito obrigado por compartilhar com a gente.