Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Estou começando agora no universo da programação PHP e com a ajuda de uns tutoriais estou montando um sistema de login.
Essa etapa consegui, porém estou tentando colocar níveis de acesso ao fazer o login. No meu banco de dados no PHPmyAdmin criei uma coluna com o nome "nível".
Gostaria de saber como coloco cada usuario ao ser logado ser redirecionado diretamente para uma página de acordo com o seu nível colocado na tabela.
Os códigos da página de login e a de validação para entenderem melhor o que foi feito:
index.php
<?php
if(isset($_GET['msg'])){
$msg = $_GET['msg'];
switch($msg){
case 1:
?>
<div class="message">
<div class="alert alert-danger">
<a href="index.php" class="close" data-dismiss="alert">×</a>
Email ou Senha errados tente outra vez.
</div>
</div>
<?php
break;
case 2:
?>
<div class="message">
<div class="alert alert-danger">
<a href="index.php" class="close" data-dismiss="alert">×</a>
Você não tem permissão para acessar esta página.
</div>
</div>
<?php
break;
case 3:
?>
<div class="message">
<div class="alert alert-success">
<a href="index.php" class="close" data-dismiss="alert">×</a>
Logout realizado com sucesso.
</div>
</div>
<?php
break;
}
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Login</title>
<link rel="stylesheet" href="css/estilo.css">
<link rel="stylesheet" href="css/bootstrap.min.css">
</head>
<body>
<div class="container">
<form action="autenticar.php" method="post" class="form-login">
<h2 class="form-login-heading">Entre com o usuário</h2>
<label for="inputUsuario" class="sr-only">Usuario</label>
<input type="text" id="inputUsuario" name="inputUsuario" class="form-control" placeholder="Usuario" required autofocus>
<label for="inputPassword" class="sr-only">Senha</label>
<input type="password" id="inputPassword" name="inputPassword" class="form-control" placeholder="Senha" required>
<div class="checkbox">
<label><input type="checkbox"value="esqueci">Esqueci a senha</label>
</div>
<button type="submit" class="btn btn-lg btn-primary btn-block">Entrar</button>
</form>
</div>
</body>
</html>
**autenticar.php**
<?php
require ("db.php");
$email = $_POST['inputUsuario'];
$senha = md5($_POST['inputPassword']);
$query = mysqli_query($conn,"SELECT * FROM usuarios WHERE email = '$email' AND senha = '$senha'");
$row = mysqli_num_rows($query);
if ($row > 0){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard.php');
}else{
header('Location: index.php?msg=1');
}
?>
Desde já agradeço muito a ajuda.Muito obrigado luiz14.
Inseri o código que me passou, porém acho que devo ter feito algo errado. Por que está dando erro.
Desculpa pela pergunta, mas é que minha experiência com programação é quase zero. É assim que tem que ficar?
<?php
require ("db.php");
$email = $_POST['inputUsuario'];
$senha = md5($_POST['inputPassword']);
$query = mysqli_query($conn,"SELECT * FROM usuarios WHERE email = '$email' AND senha = '$senha'");
$row = mysqli_num_rows($query);
if ($row > 0){
if(puxa sua coluna com nome "nivel" = 1){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard.php');
}else if(puxa sua coluna com nome "nivel" = 2){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard2.php');
}else if(puxa sua coluna com nome "nivel" = 3){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard3.php');
}else{
header('Location: index.php?msg=1');
}
}
?>
>
21 horas atrás, luiz14 disse:
if ($row > 0){
if(puxa sua coluna com nome "nivel" = 1){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard.php');
}else if(puxa sua coluna com nome "nivel" = 2){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard2.php');
}else if(puxa sua coluna com nome "nivel" = 3){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard3.php');
}else{
header('Location: index.php?msg=1');
}
}if(**puxa sua coluna com nome** "nivel" = 1){
ai ele colocou um exemplo do nome da coluna q seria no caso "nivel", entendeu ?
você tem uma coluna com os níveis dos usuários não tem ? tabela "usuários" coluna "nível"...
ai ficaria:
if("nivel" = 1){
entendeu ?!>
13 horas atrás, elicarlos1987 disse:
Muito obrigado luiz14.
Inseri o código que me passou, porém acho que devo ter feito algo errado. Por que está dando erro.
Desculpa pela pergunta, mas é que minha experiência com programação é quase zero. É assim que tem que ficar?
<?php
require ("db.php");
$email = $_POST['inputUsuario'];
$senha = md5($_POST['inputPassword']);
$query = mysqli_query($conn,"SELECT * FROM usuarios WHERE email = '$email' AND senha = '$senha'");
$row = mysqli_num_rows($query);
if ($row > 0){
if(puxa sua coluna com nome "nivel" == 1){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard.php');
}else if(puxa sua coluna com nome "nivel" == 2){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard2.php');
}else if(puxa sua coluna com nome "nivel" == 3){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard3.php');
}
}else{
header('Location: index.php?msg=1');
}
?>
Você não sabe puxar uma coluna com mysqli? Tenta assim:
$query = mysqli_query($conn,"SELECT * FROM usuarios WHERE email = '$email' AND senha = '$senha'");
$row = mysqli_num_rows($query);
$dados = $query->fetch_array();
if ($row > 0){
if($dados['nivel'] == 1){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard.php');
}else if($dados['nivel'] == 2){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard2.php');
}else if($dados['nivel'] == 3){
session_start();
$_SESSION['email'] = $_POST['inputUsuario'];
$_SESSION['senha'] = $_POST['inputPassword'];
header('Location: dashboard3.php');
}
}else{
header('Location: index.php?msg=1');
}
Depois é só você mudar o "header location" para quais paginas você vai direcionar o usuário. Mas isso é um exemplo, você tem que entender para adaptar ao seu projeto ou vai dar erro mesmo.Obrigado luiz14. Usei o código que me passou, porém todos os usuários estão sendo redirecionado para a mesma página. Mesmo o "header location" indicando páginas diferentes.
>
1 hora atrás, elicarlos1987 disse:
Obrigado luiz14. Usei o código que me passou, porém todos os usuários estão sendo redirecionado para a mesma página. Mesmo o "header location" indicando páginas diferentes.
Foi mal, eu coloquei "=" no lugar de "==" nos ifs e o else tava no lugar errado, editei o código acima. Vê se vai agora.
Deu tudo certo luiz14. Muito obrigado pela ajuda cara.
Me ajudou muito.
Depois de alguns dias sem mexer no projeto por falta de tempo, voltei a mexer neles.
Porém me surgiu uma dúvida, criei no banco de dados uma coluna e chamei de "nome", gostaria de exibir o nome cadastrado para cada usuário numa tela de boas vindas.
Usando esse mesmo arquivo que uso para fazer a validação.
>
Em 14/10/2017 at 17:45, elicarlos1987 disse:
Depois de alguns dias sem mexer no projeto por falta de tempo, voltei a mexer neles.
Porém me surgiu uma dúvida, criei no banco de dados uma coluna e chamei de "nome", gostaria de exibir o nome cadastrado para cada usuário numa tela de boas vindas.
Usando esse mesmo arquivo que uso para fazer a validação.
Você pode guardar os dados em sessão após o login.
if($dados['nivel'] == 1){
session_start();
$_SESSION['nome'] = $dados['nome'];
}
Tela de boas vindas:
<div>Bem vindo <?php echo $_SESSION['nome'];?></div> // coloca essa linha na tela de boas vindas