Ir para conteúdo

Arquivado

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

gedmilson

Problema em dividir nivéis de acesso

Recommended Posts

Estou criando um site com 3 níveis de acesso: um administrativo, outro para professores e outro para alunos

o administrativo até que está normal mas quando tento dividir o login termino esbarrando com barios problemas.

vou mandar os codigos para ilustrar melhor meu problema.

 

UsuarioDAO:

 

public function AutenticarUsuario($usu = '', $senha = '', $permissao = ''){
                try {

              if($permissao == 1){      
            $sql = "SELECT cod, nome FROM usuario WHERE status = 1 AND permissao = :permissao AND usuario = :usuario AND senha = :senha";

            $param = array(
                ":permissao" => $permissao,
                ":usuario" => $usu,
                ":senha" => $senha
            );
            }else{
            $sql = "SELECT cod, nome FROM usuario WHERE status = 1 AND usuario = :usuario AND senha = :senha";

            $param = array(               
                ":usuario" => $usu,
                ":senha" => $senha
            );                
            }

            $dt = $this->pdo->ExecuteQueryOneRow($sql, $param);
// var_dump($dt);
            if ($dt != null) {
                $usuario = new Usuario();
                $usuario->setCod($dt["cod"]);
                $usuario->setNome($dt["nome"]);
                return $usuario;
            } else {
                return null;
            }
        } catch (PDOException $ex) {
            if ($this->debug) {
                echo "ERRO: {$ex->getMessage()} LINE: {$ex->getLine()}";
            }
            return null;
        }
    }

UsuarioAction

    case 4:
        $usu = filter_input(INPUT_POST, "txtUsuario", FILTER_SANITIZE_STRING);
        $senha = filter_input(INPUT_POST, "txtSenha", FILTER_SANITIZE_STRING);
        $permissao = 2;

        $usuario = $usuarioController->AutenticarUsuario($usu, $senha, $permissao);
        if (!empty($usuario)) {
            $_SESSION["cod"] = $usuario->getCod();

            $ex = explode(" ", $usuario->getNome());

            $_SESSION["nome"] = $ex[0];           
            echo "ok";
        } else {
            echo "invalid";
        }
        break;
}

O problema é quando tendo exibir a permissão que começa a dar problemas;

print_r($_SESSION['permissao']);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe pela minha falta de objetividade.

O que eu estou precisando fazer é

mais ou menos uma coisa assim.

além dos dos valores 

 

                $usuario->setCod($dt["cod"]);
                $usuario->setNome($dt["nome"]);

Também apareça o valor

$usuario->setNome($dt["permissao"]);

 

tentei fazer do seguinte modo

 

      $sql = "SELECT cod, nome, permissao FROM usuario WHERE status = 1 AND usuario = :usuario AND senha = :senha" AND permissao =:permissao;

            $param = array(               
                ":usuario" => $usu,
                ":senha" => $senha
            );                
            }

            $dt = $this->pdo->ExecuteQueryOneRow($sql, $param);
// var_dump($dt);
            if ($dt != null) {
                $usuario = new Usuario();
                $usuario->setPermissao($dt["Permissao"])
                $usuario->setCod($dt["cod"]);
                $usuario->setNome($dt["nome"]);
                return $usuario;
            } else {
                return null;
            }

mas não deu certo.

Espero ter sido mais um pouco especifico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

Desculpe amigo.. mas está um pouco confuso entender oque você precisa. Lança algum erro?

 

Aparentemente o codigo está correto.. só aqui que pode está incorreto:

$dt["Permissao"]

use como foi definido no SQL:

 

$dt["permissao"]

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por groudon900
      Olá preciso criar um login com niveis de acesso, por enquanto o login acessa normal, mas ao ter acess_level = 1 eu queria que ele fosse redirecionado para o dashboard
       
       
      meu codigo do login!
       
      <?php session_start(); include('conexao.php'); if(empty($_POST['usuario']) || empty($_POST['senha'])) { header('Location: login.php'); exit(); } $usuario = mysqli_real_escape_string($conexao, $_POST['usuario']); $senha = mysqli_real_escape_string($conexao, $_POST['senha']); $query = "select usuario from usuario where usuario = '{$usuario}' and senha = md5('{$senha}')"; $result = mysqli_query($conexao, $query); $row = mysqli_num_rows($result); if($row == 1) { $_SESSION['usuario'] = $usuario; header('Location: index.php'); exit(); } else { $_SESSION['nao_autenticado'] = true; header('Location: ERROR.php'); exit(); }  
    • Por szLeonardo
      Olá a todos,
      Estou com um problema no meu cadastro de usuário.
      A parte de cadastrar está sendo realizada corretamente e meu login também, o meu problema está é que tenho que cadastrar em uma tela, depois entrar em outra para validar e acessar.
      Gostaria que quando eu realizasse o cadastro já valida-se e entrasse direto, sem precisar ter que entrar na outra pagina e rodar o login.
       
      Segue meu cadastro que está funcionando:  
      //--Insere Registro   if(isset($_POST['cadastrar'])){     @$usuario      = trim(strip_tags($_POST['usuario']));     @$senha        = trim(strip_tags($_POST['senha']));     @$nivel_acesso = trim(strip_tags($_POST['nivel_acesso']));     $insert = "INSERT INTO cad_usuario (usuario, senha, nivel_acesso)                 VALUES (:usuario, :senha, :nivel_acesso)";   try{     $result = $conexao->prepare($insert);     $result->bindParam(':usuario',      $usuario, PDO::PARAM_STR);     $result->bindParam(':senha',        $senha, PDO::PARAM_STR);     $result->bindParam(':nivel_acesso', $nivel_acesso, PDO::PARAM_STR);     $result->execute();     $contar = $result->rowCount();   if($contar>0){     echo '<div class="alert alert-success">           <button type="button" class="close" data-dismiss="alert">×</button>           <strong>Sucesso!</strong> O Usuario foi Cadastrado!</div>';          $_SESSION['autenticado'] = true;   }else{     echo '<div class="alert alert-danger">           <button type="button" class="close" data-dismiss="alert">×</button>           <strong>Erro ao cadastrar!</strong> Não foi possível cadastrar o Usuario.</div>';   }}catch(PDOException $e){     echo $e;   }}   } }  
      Segue meu validador do usuário cadastrado que está funcionando: 
      <?php session_start(); include_once "connection/conecta.php"; $usuario = new Usuario(); try {   if($usuario->confere($_POST['usuario'],$_POST['senha'])) {     $_SESSION['autenticado'] = true;     $_SESSION['usuario'] = $_POST['usuario'];     header('location: principal.php');   } else {     $_SESSION['autenticado'] = false;     include_once "index.php";     exit("<div class='alert alert-danger col-sm-12'>Usuário ou senha incorretos. Verifique</div>");   } } catch(PDOException $p){   echo "Ocorreu um erro inesperado: ". $p->getMessage(); } ?>  
      Segue minha pagina principal aonde valida a $_SESSION['autenticado'] = false; 
      Mas só valida se passar na pagina index e passar pela validação a cima.
       <?php require_once("connection/conecta.php"); ob_start(); session_start();  if (@!$_SESSION['autenticado']){    include_once "index.php";    exit("<div class='alert alert-danger col-sm-12'>Para acessar o sistema você deve efetuar login</div>");  }     $logado = $_SESSION['usuario'];     $sql = "SELECT * from cad_usuario WHERE usuario = '$logado' and situacao = 'A'";     try{       $result = $conexao->prepare($sql);         $result->execute();       $contar = $result->rowCount();                if($contar =1){         $loop = $result->fetchAll();         foreach ($loop as $show){           $userLogado  = $show['usuario'];           $senhaLogado = $show['senha'];           $nivelLogado = $show['nivel_acesso'];         }       }       }catch (PDOWException $erro){ echo $erro;} ?>  
    • Por heenrique
      Bom Dia Prezados!
       
      estou realizando o desenvolvimento de um sistema multi empresas no ao acessar ira pedir um código, ate a parte do código tudo OK, apos passar esse código vai para um tela de login onde cada meu sistema é ligado com o banco de dados do sistema (é um sistema padrão)do cliente ate aqui OK. gostaria de limitar a quantidade de acesso a esse código, ex empresa 1 contratou código com 3 acessos, empresa 2 contratou 1 acesso, alguém tem um dica ou um outro método para realizar esse controle ?
    • Por lucas_gabriel
      Olá, boa noite!
      Gostaria de saber como faço para bloquear o acesso direto a diretórios? Por exemplo tem vários arquivos dentro de um diretório, passo o link para o usuário acessar um arquivo especifico mas não quero que ele consiga entrar no diretório e liste todos os arquivos que tem lá. Como eu faria para realizar essa restrição?
    • Por Felipe_N22
      Gostaria de saber como faço para habilitar os serviços do tomcat para eu conseguir obter acesso via ip. O tomcat disponibiliza três opções, sendo elas server status, manager app e host manager. Eu consigo ter acesso a essas configurações somente via localhost:8080, mas quando eu tento através do meu ip x.x.x.x:8080 ele mostra que os serviços não estão disponíveis.
       
      Segue simulação, eu tentei acessar o menu "Server Status".
       
      Através do localhost:
       

       
      Através do IP:
       

       
       
       
×

Informação importante

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