Tenho um sistema de login com php usando pdo e pra logar o usuário uso duas variaveis $user e $pass…
Uma vez logado, preciso verificar se o nivel do usuario permite q ele acesse a pagina x.php, so que pra verificar, tenho que resgatar informação do campo ‘level’ do Banco de Dados e armazenar dentro de uma variavel para trata-la…
A pergunta é: como acesso as informações do usuario logado e retorno pra uma variavel somente o nivel dele??
Usando PDO…
$sql = "SELECT level FROM tabela WHERE user = ? AND pass = ?";
$query = $con->prepare($sql);
$query->bindValue(1, $user);
$query->bindValue(2, $pass);
$query->execute();
$level = $query->fetchColumn();
echo $level;
Valeu amigo obrigado… Cnsegui tbm com um Foreach():
$busca = $pdo->prepare("SELECT * FROM usuarios WHERE user=? AND pass=?");
$busca->bindParam(1,$user);
$busca->bindParam(2,$senha);
$busca->execute();
$busca->fetchAll(POD::FETCH_ASSOC);
foreach($busca as $colum){
$level = $colum['lvUser'];
}
Desnecessário usando foreach…
Quantos registros você irá puxar passando apenas um único usuário e senha?
Se o banco retornasse +1 linha, o foreach faria sentido, mas como não é o caso… o fetchColumn é exatamente para isso, trazer um valor de uma única linha…
Agora se precisar trazer todos os campos de uma vez e preencher uma única linha, ao invés do fetchColumn pode trazer um fetchobject…
$busca = $pdo->prepare("SELECT * FROM usuarios WHERE user=? AND pass=?");
$busca->bindParam(1,$user);
$busca->bindParam(2,$senha);
$busca->execute();
$usuario = $busca->fetchObject();
echo $usuario->lvUser;
echo $usuario->nome;
echo $usuario->idade;
Por exemplo…
O comum é trazer um usuário completo da base e guardá-lo em sessão (os dados cruciais apenas) uma única vez no login… assim depois você teria disponível em qualquer lugar do sistema…
$_SESSION['usuario'] = $usuario; //guarda no login...
$usuario = $_SESSION['usuario']; //pega do login...
if ($usuario->lvUser == 'admin') {
//...
}
Vai brincando, assim você conhece mais o php, agora usar laço de repetição para trazer um único registro definitivamente não faz sentido e acaba sendo processamento desnecessário…
Entendi, Muito obrigado pela explicação… Dessa maneira realmente bem melhor trabalhar!