Ir para conteúdo

POWERED BY:

Arquivado

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

jooj oj

Problemas no Nível de acesso no login PHP e Mysql

Recommended Posts

pessoal, estou com problemas para fazer o nivel de acesso de um sistema web, o login já funciona inteiro inclusive o tutorial que vou postar junto com o projeto no meu github, é um sistema de cadastro de usuários do sistema e clientes, mas para cadastrar e editar os usuários queria colocar somente quem tiver permissão de adm (1) e quem não tiver vai somente adicionar e editar os  clientes, mas ele só entra no else, já tentei todos os vídeos e fóruns aqui, não sei mais o que fazer ;-;

 

no meio do código tem a parte que eu tentei de diversas maneiras fazer a verificação, só não sei o que fazer, queria entender ;-;

 

<?php
// Conexão
require_once 'conexao.php';
 
// Sessão
session_start();
// Botão enviar
if(isset($_POST['btn-entrar'])):
    $erros = array();
$login = mysqli_escape_string($conn, $_POST['login']);
$senha = mysqli_escape_string($conn, $_POST['senha']);
 
if(isset($_POST['lembrar-senha'])):
    setcookie('login', $login, time()+3600);
setcookie('senha', $senha, time()+3600);
endif;
 
if(empty($login) or empty($senha)):
    $erros[] = "<li> O campo login/senha precisa ser preenchido </li>";
else:
 
    $sql = "SELECT login FROM usuarios WHERE login = '$login'";
$resultado = mysqli_query($conn, $sql);
 
if(mysqli_num_rows($resultado) > 0):
    $senha = $senha;
$sql = "SELECT * FROM usuarios WHERE login = '$login' AND senha = '$senha'";
 
$resultado = mysqli_query($conn, $sql);
 
 
if(mysqli_num_rows($resultado) == 1):
 
 
    $dados = mysqli_fetch_array($resultado);
mysqli_close($conn);
$_SESSION['logado'] = true;
$_SESSION['id_usuario'] = $dados['id'];
 
 
 //começa aqui

$usuario = mysqli_fetch_assoc($resultado);
$_SESSION['nivel'] = $usuario['nivel'];
 
 if(isset($usuario['nivel']) == 1):
       header('location: home_user.php');
 else:
  header('location: home.php');
endif;
 

 

//até aqui, sem isso o código funciona de boa, mas sem o nível de acesso, até tentei trocar para char e 's' e 'n', inves de 1 e 0 para admin ou user

 


 
else:
    $erros[] = "  <li> Usuário e senha não conferem </li>";
endif;
 
else:
    $erros[] = "<li> Usuário inexistente </li>";
endif;
endif;
endif;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou ser sincero com você, isso ai vai dá merd$%&#...

A senha não tem nenhuma encriptação (pelo menos você ta fazendo a limpeza dos caracteres).

Sobre o nível é só criar uma condição.

//Errado:  
if(isset($usuario['nivel']) == 1):

//Correto
if(isset($usuario['nivel']) && $usuario['nivel'] == 1):

Outra coisa, você delega o nível num simples redirecionamento, acho que seria mais viável você colocar na página em questão (home.php), assim ela decide quem é ou não admin.

Compartilhar este post


Link para o post
Compartilhar em outros sites

em relação a criptografia da senha eu tinha feito, mas ficava alterando a senha pelo phpmyadmin para ir testando mais facil e acabei esquecendo de clocar de volta, valeu pelo aviso, mas essa parte eu já consegui fazer,  meu problema é que  a verificação do admin  só cai no else, como se o "nivel" não estivesse sendo reconhecido no index, e a coluna nivel está na tabela usuario mesmo, acho que o if até está certo também mas a variável não reconhece ;-;

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
×

Informação importante

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