Ir ao conteúdo
  • Cadastre-se

Marcelocjbh

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

posts postados por Marcelocjbh

  1. 21 horas atrás, joseph_dev disse:

    Seu site tem um controlador que gerencia as rotas? Se não tem, o mais simples é você verificar o nível do usuário em cada uma das 3 páginas do seu site.

    Ex na página administrador.php:

    
    
    if($_SESSION['nivel'] != "1"){
      exit('Você não tem permissão para acessar essa página.');
    }

     

    Tem outras formas mais elegantes de fazer isso, mas se tratando apenas de um projeto de CRUD, acredito que didático, já resolve a situação.

    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!

     

     

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

    21 horas atrás, DiF disse:

    @Marcelocjbh  Talvez esse post possa te ajudar a clarear as ideias de implementação:

     

    A parte que te interessa é essa do código:

     

    
    
    <?php
    session_start();
    setcookie("ck_authorized", "true", 0, "/");
    
    /*testa se a sessão tem valor.
      Refere-se a linha lá no arquivo de login onde
      é inserido o login na sessão. */
    if(!isset($_SESSION["login"])):
        header("location: index.php");
    else:
        $login = $_SESSION["login"];
    endif;    
    ?>

    Ele é o responsável pela verificação se está logado no sistema. Você pode alterar, para ele verificar o nível também e redirecionar para o lugar certo.

     

    Vou realizar as devidas mudanças conforme você me orientou. Muito obrigado por compartilhar com a gente.

    • Curtir 1
  2. 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!