Ir para conteúdo

Arquivado

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

Rodrigo Souza de Jesus

Verificar níveis de usuário(login)

Recommended Posts

Olá.

Sou novo aqui.

Gostaria de uma ajuda na verificação de usuário. Se o usuário é de nível admin ou valor 1.

No meu banco chamei uma coluna de 'nível' varchar admin->administrador e 1->usuário comum.

Es aqui meu código:

require_once 'conexao.php';
if(isset($_POST['logar'])){
//Pega os valores do formulário
$usuario = filter_input(INPUT_POST,'usuario',FILTER_SANITIZE_STRING);
$senha = filter_input(INPUT_POST,'senha',FILTER_SANITIZE_STRING);
if(!empty($usuario) && !empty($senha)){//empty: se variável for vazia
$pdo = conectar();
$sql = "SELECT usuario,senha FROM usuarios WHERE usuario = ? AND senha = ?";
$verifica = $pdo->prepare($sql);
$verifica->bindValue(1,$usuario);
$verifica->bindValue(2,$senha);
$verifica->execute();
if($verifica->rowCount() == 1){
$dados = $verifica->fetch(PDO::FETCH_ASSOC);
switch ($dados['nivel']):
case "admin":
header("Location: administrador.php");
break;
case "1":
header("Location: user.php");
break;
endswitch;
echo "<script>alert('Usuario logado com sucesso!')</script>";
}else{
echo "Usuario ou senha incorretos";
}
}else{
echo "Todos os campos devem ser preenchidos";
}

}

Alguém pode me ajudar?

Está dando esse erro-> Notice: Undefined index: nivel in C:\wamp\www\ControledeVenda\logar.php on line 20

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não está pegando o nivel do banco de dados e sim só o username e o password.

então você tá acessando um index que não existe,que é o nivel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

es aqui meu index.php:

<?php
require_once 'conexao.php';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>controlevenda</title>
<link rel="stylesheet" href="css/estilo.css"/>
<link href='https://fonts.googleapis.com/css?family=Oswald:400,300,700' rel='stylesheet' type='text/css'/>
</head>
<body>
<div id="corpo">
<h1>Faça o seu login</h1>
<div id="login">
<div class="message"></div>
<div class="logo">
<img src="img/login.png" alt="" width="100px" height="100px">
</div>
<div class="acomodar">
<form method="post" action="logar.php">
<label for="usuario">Usuário:</label>
<input id="usuario" type="text" class="txt" name="usuario" placeholder="Insira seu usuário">
<label for="senha">Senha:</label>
<input id="senha" type="password" class="txt" name="senha" placeholder="Insira sua senha">
<input type="submit" name="logar" class="sb sb-submit" value="Entrar">
</form>
<!--acomodar-->
</div>
<!--login-->
</div>
<div id="criar-conta">
<a href="cadastro.php">Criar um login de acesso »</a>
</div>
</div>
</body>
</html>
não pretendo colocar uma opção para o usuario marcar como administrador ou usuário e chama lá de name='nivel'.
Os campos são só usuario e senha. Gostaria que o usuário comum ja cadastrado no banco banco com nivel '1' seja direcionado ao user.php.
Estou desenvolvendo um projeto de comissão de vendas para a empresa do meu estágio
saidmm ou alguém , se poderem me ajudar agradeço!
Boa noite!

Compartilhar este post


Link para o post
Compartilhar em outros sites

no seu primeiro código está :

if($verifica->rowCount() == 1){
            $dados = $verifica->fetch(PDO::FETCH_ASSOC);
            switch ($dados['nivel']):
                case "admin":
                    header("Location: administrador.php");

a questão é,dentro do array $dados,não existe o índice nível,você tem que consultar o nível também com a consulta,dps disso ai sim você usa o switch para checar se é admin ou user.

se o nível estiver na mesma tabela,tenta por :

        $sql = "SELECT usuario,senha,nivel FROM usuarios WHERE usuario = ? AND senha = ?";

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.