Sistema de login multi usuário usando case
Bom dia,
Estou desenvolvendo um sistema de login onde o usuário após logado passa por redirecionamento, já que cada usuário tem sua página especifica no sistema e não pode ser feito uso de busca dos dados desse usuário por banco de dados, porque cada página tem seu próprio layout, porem estou tendo dificuldades.
O sistema deveria funcionar assim:
1° O cliente coloca seu login e senha
2° O sistema faz a verificação normal no banco de dados desse usuário se confirmado a existência do usuário no db ele envia o id do usuário para uma página de redirecionamento
3° Essa página de redirecionamento pega o id do usuário e compara aos existentes no "case", localizando o id ele redireciona para a página que estiver indicada
Segue os códigos
index.php
<form action="validar.php" method="post">
<fieldset>
<legend>Dados de Login</legend>
<label for="txUsuario">Usuário</label>
<input type="text" name="usuario" id="txUsuario" maxlength="25" />
<label for="txSenha">Senha</label>
<input type="password" name="senha" id="txSenha" />
<input type="submit" value="Entrar" />
</fieldset>
</form>
validar.php
<?php
// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}
// Tenta se conectar ao servidor MySQL
mysql_connect('localhost', 'root', '') or trigger_error(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysql_select_db('database') or trigger_error(mysql_error());
$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);
// Validação do usuário/senha digitados
$sql = "SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE (`usuario` = '". $usuario ."') AND (`senha` = '". sha1($senha) ."') AND (`ativo` = 1) LIMIT 1";
$query = mysql_query($sql);if (mysql_num_rows($query) != 1) {
// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
echo "Login inválido!"; exit;
} else {
// Salva os dados encontados na variável $resultado
$resultado = mysql_fetch_assoc($query);
// Se a sessão não existir, inicia uma
if (!isset($_SESSION)) session_start();
// Salva os dados encontrados na sessão
$_SESSION['UsuarioID'] = $resultado['id'];
$_SESSION['UsuarioNome'] = $resultado['nome'];
$_SESSION['UsuarioNivel'] = $resultado['nivel'];
// Redireciona o visitante
header("Location: redirecionar.php"); exit;
}
?>
redirecionar.php
<?
$dbh = mysql_connect("localhost","usuario","senha");
mysql_select_db("banco de dados",$dbh);
$id = $_POST["id"];
$usuario = $_POST["usuario"];
$select = ("SELECT * FROM 'cliente' WHERE id='$id',$dbh");
$resultado = mysql_query($select);
$linhas = count($resultado);
if ($linhas > 0){
session_start();
$_SESSION["id_usuario"] = $id;
$_SESSION["usuario_usuario"] = $usuario;
$login = $_POST["id"];switch($login)
{
case '1':
header ("location: alex.php");
break;
case '2':
header ("location: ana.php");
break;
default
header ("location: erro.php");
}}
mysql_close($dbh);
?>
página do alex.php
<?php
// A sessão precisa ser iniciada em cada página diferente
if (!isset($_SESSION)) session_start();
$nivel_necessario = 2;
// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) {
// Destrói a sessão por segurança
session_destroy();
// Redireciona o visitante de volta pro login
header("Location: index.php"); exit;
}
?>
<h1>Página restrita</h1>
<p>Olá, <?php echo $_SESSION['UsuarioNome']; ?>!</p>
página da ana.php
<?php
// A sessão precisa ser iniciada em cada página diferente
if (!isset($_SESSION)) session_start();
$nivel_necessario = 3;
// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) {
// Destrói a sessão por segurança
session_destroy();
// Redireciona o visitante de volta pro login
header("Location: index.php"); exit;
}
?>
<h1>Página restrita</h1>
<p>Olá, <?php echo $_SESSION['UsuarioNome']; ?>!</p>
Já passei dias buscando fazer esse processo funcionar, sem sucesso!
Agradeço desde já pela força de todos
Sds
Maycke
Discussão (4)
Carregando comentários...