Ir para conteúdo

Arquivado

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

grldesign

Sistema de Login

Recommended Posts

Estou tendo problemas com um sistema de login que dependendo do nível de cadastro do usuário, redireciona para um tipo de painel com suas permissões independentes.

 

Nível Administrador -> painel.php?tipo=administrador

Nível Professor -> painel.php?tipo=professor

Nível Aluno -> painel.php?tipo=aluno

 

O que preciso é o seguinte. De um código de verificação de login e senha, que pegue o tipo de cadastro do usuario logado e redirecione para o seu painel específico.

Utilizando sessions, que proteja todas páginas ´do painel, caso esteja logado execute, senão retorne para a index.

 

Caso alguem possa me ajudar já agradeço. Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, e se alguém ir na barra de endereços e digitar painel.php?tipo=administrador? Ele vai mudar o que quiser? Faz uma página e nela você busca o valor do campo nível na tabela usuários, que deve ser igual o da sessão (um exemplo), se for 2 tem todas as permissões, se for 1 só algumas coisas e se for 0, tem menos permissões. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acontece o seguinte. O Acesso não será cedido apenas pela variável do endereço real da página (painel.php?tipo=administrador) e sim pelo nome de usuario e senha, armazenados nas session e testado a cada pagina entende?Tem como me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É fácil:

$usuario = $_SESSION[usuario];$senha = $_SESSION[senha];// Pega o valor das sessões$busca = mysql_query("SELECT * FROM tabela where usuario=$usuario AND senha=$senha");while ($r = mysql_fetch_array($busca)) {$nivel = $r[nivel];} // Fiz a consulta e peguei o valor do nivel do db, depois verifica o valorif ($nivel=2) {// Aparece alguma coisa} else if ($nivel=1) {// Aparece outra coisa} else {// Aparece mais outra coisa}

Entendeu? ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Só preciso saber como criar a session, porque sempre que crio, tanto com session_register ou somente com $_SESSION["array"] não reconhece os valores nas páginas a seguir entende?Preciso saber como setar corretamente a session se o login foi bem sucedido e como recuperar o valor delas nas outras páginas.Flw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

session_start()$_SESSION["usuario"] = $usuario;$_SESSION["senha"] = $senha;

Na página pra pegar o valor dela:

session_start()$usuario = $_SESSION["usuario"];$senha = $_SESSION["senha"];

você deve dempre usar o session_start() no começo da página pra poder usar a sessão, ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda prescot. Seguinte, o select fica da forma abaixo né?"SELECT * FROM tabela WHERE username='$user' AND password='$pass'"correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente não está funcionando. Abaixo vai o código de verificação e o de recebimento da session na pagina alvo. Tomara que possa me ajudar.verifica.php

<?    if(!empty($HTTP_POST_VARS[cad_panel])) {          if(!empty($HTTP_POST_VARS[user_panel])) {                  if(!empty($HTTP_POST_VARS[pass_panel])) {  $cad = $HTTP_POST_VARS[cad_panel];  $user = $HTTP_POST_VARS[user_panel];  $pass = $HTTP_POST_VARS[pass_panel];      require('config/dados.php');    $busca = "SELECT * FROM login WHERE username='$user' AND password='$pass'";  $verifica = mysql_query($busca);  $valida = mysql_num_rows($verifica);  $campo = mysql_fetch_array($verifica);    $campo_nome = $campo[nome_completo];  $campo_usuario = $campo[username];  $campo_senha = $campo[senha];  $campo_cadastro = $campo[cadastro];    if(($valida = 1)) {            session_start();    $_SESSION["nome"] = $campo_nome;    $_SESSION["username"] = $campo_usuario;    $_SESSION["senha"] = $campo_senha;    $_SESSION["cadastro"] = $campo_cadastro;              if(($campo_cadastro = 'Administrador')) {            header("location: painel.php");    } //Fecha IF Administrador    if(($campo_cadastro = 'Aluno')) {            header("location: painel.php");    } //Fecha IF Aluno  if(($campo_cadastro = 'Professor')) {            header("location: painel.php");    } //Fecha IF Professor    }  else {      header ("location: index.php");  }    }    }    }  ?>

painel.php

<?php session_start(); $ses_cad  = $_SESSION["cadastro"]; $ses_nome = $_SESSION["nome"]; $ses_user = $_SESSION["username"]; $ses_pass = $_SESSION["senha"]; require('config/dados.php');$busca = "SELECT * FROM login WHERE username='$ses_user' AND password='$ses_pass'";$verifica = mysql_query($busca);$logado = mysql_num_rows($verifica);$campo = mysql_fetch_array($verifica);$db_cadastro = $campo[cadastro];    if(($db_cadastro = $ses_cad)) { echo "Olá $ses_nome. Seja Bem-Vindo ao Painel Administrativo, versão do "$ses_cad";}else {  echo "Você não está logado.";}?>

Sempre que tento ele diz que nao estou logado, e os dados estão corretos. O que pode estar acontecendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?

session_start();

if(!empty($HTTP_POST_VARS[cad_panel])) {

if(!empty($HTTP_POST_VARS[user_panel])) {

if(!empty($HTTP_POST_VARS[pass_panel])) {

 

$cad = $HTTP_POST_VARS[cad_panel];

$user = $HTTP_POST_VARS[user_panel];

$pass = $HTTP_POST_VARS[pass_panel];

 

require('config/dados.php');

$busca = "SELECT * FROM login WHERE username='$user' AND password='$pass'";

$verifica = mysql_query($busca);

$valida = mysql_num_rows($verifica);

$campo = mysql_fetch_array($verifica);

 

$campo_nome = $campo[nome_completo];

$campo_usuario = $campo[username];

$campo_senha = $campo[senha];

$campo_cadastro = $campo[cadastro];

 

if(($valida = 1)) {

 

$_SESSION["nome"] = $campo_nome;

$_SESSION["username"] = $campo_usuario;

$_SESSION["senha"] = $campo_senha;

$_SESSION["cadastro"] = $campo_cadastro;

 

if(($campo_cadastro = 'Administrador')) {

header("location: painel.php");

} //Fecha IF Administrador

 

if(($campo_cadastro = 'Aluno')) {

header("location: painel.php");

} //Fecha IF Aluno

 

if(($campo_cadastro = 'Professor')) {

header("location: painel.php");

} //Fecha IF Professor

 

} else {

header ("location: index.php");

}

}

}

}

?>

O session_start() deve ser a primeira coisa do site, entende? :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prescot-san, fiz tudo como você indicou e simplesmente não está passando os valores das variaveis da sessao de pagina para página. O que pode estar acontecendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, só pra fazer um teste, faça isso:

<html><body><form method="POST" action="gravar.php"> Nome: <input type="text" name="nome" size="20"></p> <p><input type="submit" value="Enviar"></p></form></body></html>

<?session_start();$nome = $_POST[nome];$_SESSION[nome] = $nome;?><script language="JavaScript" type="text/javascript"> location.href="mostrar.php"; </script>

<?session_start();$nome = $_SESSION[nome];echo $nome;?>

Vá no index.php e digite alguma coisa, clique em enviar, ele vai pra página "gravar.php" e vai ser redirecionada para a "mostrar.php", veja se aparece alguma coisa, se aparecer a sessão no server tá funfando, mas se não aparecer nada, escolha outro servidor. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prescot, estou testando as sessions no meu pc, mas não funciona nem da maneira como você explicou para fazer.Não sei o que posso fazer e preciso disso com urgência.... tem algo mais que se possa fazer? um webserver + atualizado talvez...pode ser?

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.