Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Caros colegas
Tenho um sistema de login e preciso imprimir em todas as páginas navegadas pelo usuário, o nível do mesmo. Ocorre que imprimo o usuário, mas o nível ele não mostra. Ao colocar este código na página
<?php echo $_SESSION['usuarioLogin']; ?>
ele retorna o registro do banco, mas se coloco
{Session.nivelLogin}
ele retorna vazio
segue o código usado
if(!isset($_SESSION["usuarioLogin"]) && !isset($_SESSION["senhaLogin"]) && !isset($_SESSION["nivelLogin"])){
header("Location: login.php");
exit;
}
$usuarioSession = $_SESSION["usuarioLogin"];
$senhaSession = $_SESSION["senhaLogin"];
$nivelSession = $_SESSION["nivelLogin"];
$sqlVerNivelUsuario = mysql_query("SELECT usuario, senha, nivel FROM usuario WHERE usuario = '$usuarioSession'
AND senha = '$senhaSession'")
Preciso que o campo nivel esteja sdempre visivel.
grato
Bom dia
Na página de cadastro estou usando um
<?php include "header.php"; ?>
que é a página onde faço as verificações. Neste arquivo eu coloquei o
session_start();
mas quando eu insiro este código para iniciar na própria página, ele me retorna o seguinte erro:
A session had already been started - ignoring session_start() in D:\server\wamp\www\intranet_advarzea\login_session\header.php on line 2
outra questão é :
a variável
<?php echo $_SESSION['usuarioLogin']; ?>
é mostrada normalmente, inclusive, fiz o teste com a variavel
{Session.senhaLogin}
mas quando crio a variavel
<?php echo $_SESSION['nivelLogin']; ?>
a mesma apareçe em branco, mesmo tendo conteudo na mesma.
Espero que possa me ajudar neste pepino..rsrsrrr
Em relação ao erro que esta dando, me parece que a sessão esta stardando duas vezes, e isso gera o erro tente esse código,
if (!isset($_SESSION)) session_start();
Se não existir a sessão, aí ela starta, caso contrário ela continua como ta!
Em relação ao NivelLogin, é descrito algum erro na pagina?
então....
não mostra erro algum!!!
Ja alterei até o html, css e verifiquei a existencia de dados no mysql! No bd existe o registro.
Seque abaixo o arquivo header.php completo
<?php
session_start();
$conexao = mysql_connect("localhost", "root", "");
$database = mysql_select_db("bancodedados");
if(!isset($_SESSION["usuarioLogin"]) && !isset($_SESSION["senhaLogin"]) && !isset($_SESSION["nivelLogin"])){
header("Location: login.php");
exit;
}
$usuarioSession = $_SESSION["usuarioLogin"];
$senhaSession = $_SESSION["senhaLogin"];
$nivelSession = $_SESSION["nivelLogin"];
$sqlVerNivelUsuario = mysql_query("SELECT usuario, senha, nivel FROM usuario WHERE usuario = '$usuarioSession'
AND senha = '$senhaSession'") or die(mysql_error());
while($resVerNivelUsuario = mysql_fetch_array($sqlVerNivelUsuario)){
$nivelSession = $resVerNivelUsuario["nivel"];
if($nivelSession == 6){
header("Location: site.php");
exit;
}
}
if(isset($restricaoAdmin)){
if($nivelSession <> 4){
header("Location: index.php");
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login com Session</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="menuContainer">
<ul id="menu">
<li><a href="index.php" title="Home">Home</a></li>
<?php if($nivelSession == 4){ ?>
<li><a href="cadastro.php?acao=cadastrar" title="Cadastrar Usu�rio">Cadastrar Usuário</a></li>
<?php } ?>
<li><a href="consultar.php" title="Consultar Usu�rios">Consultar Usuários</a></li>
<li><a href="nivel.php" title="nivel">nivel</a></li>
<li><a href="logout.php" title="Logout">Logout</a></li>
</ul>
</div>
<!--menuContainer-->tenta dar um
{
echo "$nivelSession";
}
no seu php, se não echoar deve ser alguma coisa na sua consulta!Simples.
Voce esta atribuindo a sua variavel de sessao relativa ao nivel do usuario ANTES do looping.
Por isso ela recebe null!
Revise o seu codigo! E aprenda a utilizar var_dump do para debuggar seu codigo!
Anilton
Não echoou nada na verificação. Vou analizar minha query
Dii
Coloquei a variavel de sessão após o looping, mas ele informa erro
Undefined variable: usuarioSession in
Vou continuar tentando?], ok?
Colegas
Testando a consulta direto no banco, recebo todos os resultados esperados.
Fiz o debug com o dBuh.php e usando a sintaxe
include_once("dBug.php");
new dBug($nivelSession)
dessa forma ele retorna na página, mas se eu coloco no código
<?php echo $_SESSION['nivelLogin']; ?>
apareçe nada
Vamos tirar uma parte desnecessária no seu código.
while($resVerNivelUsuario = mysql_fetch_array($sqlVerNivelUsuario)){
$nivelSession = $resVerNivelUsuario["nivel"];
if($nivelSession == 6){
header("Location: site.php");
exit;
}
}
Não tem o porquê desse looping, já que você está utilizando esse looping sem necessidade, e está perdendo escalabilidade.
Troque por isso:
$resVerNivelUsuario = mysql_fetch_array($sqlVerNivelUsuario);
$nivelSession = $resVerNivelUsuario["nivel"];
if($nivelSession == 6){
header("Location: site.php");
exit;
}
E dê um
var_dump( $nivelSession );
E no seu código, você atribuiu
$nivelSession = $_SESSION["nivelLogin"];
?!?!?! - A variável $_SESSION['nivelLogin'] tem algum valor? Porque se ela está no looping e não tiver valor, não tem sentido o que você está fazendo, que é fazer uma outra consulta pra receber o nível do usuário do Banco de Dados.
:lol:A resposta para o debug foi
>
string '4' (length=1)
O qual 4 é o nivel no banco
Mas se a variável tem o valor, por que não pode ser exibida quando dou o echo?
Depende, qual foi a resposta toda? inclusive da variável
As vezes você quer dar uma echo em uma variável que está dentro de um array ( Session ) mas que está em um array bidimensional. Exemplo:
$_SESSION['nivel']['usuario']. Por isso que você quando debugar, tem que por o path completo.
Você iniciou a sessão e armazenou as variáveis corretamente?
Se sim, você iniciou a sessão na página que quer imprimir os dados?
Espero ter ajudado... Abraços!