Ir para conteúdo

POWERED BY:

Arquivado

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

Fabiano Carloto

Aviso de problemas com $_SESSION[""];

Recommended Posts

Galera,

 

 

Tenho uma página que uliliza $_SESSION[""] como forma de controlar logins. Como ela tem um tempo para expirar ela mosta uma mensaguem dizendo que eu nao estou mais logado. Até ai tudo bem, porém ela apresenta mais uma mensagem:

Notice: Undefined index: id in C:\Arquivos de programas\Apache Group\Apache2\htdocs\mis\menu.php on line 5

 

Você não esta logado!!!

 

Tem como faze esta parte não aparecer na página?

 

 

Segue código:

session_start();

 

if ($_SESSION["id"] == false)

{

echo "<p><b><font size='1' face='Verdana' color='#FF0000'>Você não esta logado!!!</font></b></p>";

exit;

}

 

Tipo, tem como aparecer somente "Você não esta logado!!!" e nao aparesentar "Notice: Undefined index: id in C:\Arquivos de programas\Apache Group\Apache2\htdocs\mis\menu.php on line 5".

 

 

Agradeço a ajuda de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo cara.. simplesmente... quando você nao está logado... nao existe o $_SESSION["id"]

ou seja.. nao tem como ele fazer a IF.. se o $_SESSION["id"] nao existe.. fazendo intao imprimir o erro...

 

para verificarmos se a $_SESSION["id"] existe... usamos o comando isset()

 

você pode fazer essa if de duas formas

if (!isset($_SESSION["id"]))

{

echo "<p><b><font size='1' face='Verdana' color='#FF0000'>Você não esta logado!!!</font></b></p>";

exit;

}

 

nesse caso.. se nao existir a id.. vai dizer q nao está logado... mas caso ainda queira insisti no false

 

if (isset($_SESSION["id"]) && $_SESSION["id"] == false)

{

echo "<p><b><font size='1' face='Verdana' color='#FF0000'>Você não esta logado!!!</font></b></p>";

exit;

}

 

nesse caso.. verficica se a variavel existe... se ela existir ela verifica se está false ou true ...

 

resolvendo seu problema...

 

 

espero ter ajudado

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

A forma correta e simples seria do modo que o colega passou acima...

 

O Erro quer dizer que o ID não está definido... mais pra ocultar esse erro, basta colocar um @ na frente do session... porém isso poderia causar um mal funcionamento do sistema ;)

 

abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe Detros, mas vai dar erro do mesmo jeito.

Veja:

if (isset($_SESSION["id"]) && $_SESSION["id"] == false)

 

Antes de mais, deve-se testar se existe a chave no array, assim:

if (array_key_exists('id', $_SESSION))
{}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não.

O isset() testa se uma variável existe.

No caso, eu testei se a chave 'id' existe no array $_SESSION. Isso porque tenho certeza de que $_SESSION existe, pois você chamou session_start(), que cria esse array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas marcio...

ainda contesto...

pois no isset eu especifico a chave 'id'

 

if(isset($_SESSION["id"]);

 

se eu quisesse saber se existisse a $_SESSION teria feito if(isset($_SESSION);

 

da mesma forma q

if(isset($_POST["id"]) != if(isset($_POST);

 

if(isset($_SESSION["id"]); é != if(isset($_SESSION);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você faz 2 usos da variável em questão. O primeiro é um teste pra ver se existe, beleza. No segundo uso, você a utilizar para uma comparação, aí dá erro.

Faça o teste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja fiz sim... todos os sistemas de login q eu ja fiz ... tirano o de classes q eu e você tava trabalhando outro dia ...

eu utilizo esse tipo de condição nas verificações... e nunca me apresentou erro.

Utilizo também em praticamente quase todos os meus codigos...

ou seja...

pra mim..

 

if(isset($_SESSION["id"]); é != if(isset($_SESSION);

 

pode fazer o teste ai depois... mas comigo funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, você tem q fazer da seguinte maneira:

 

if(isset($_SESSION["id"])){

if($_SESSION['id'] === false){

echo "sua sessão é falsa";

}

}else{

echo "sua sessão é falsa";

}

 

espero ter ajudado, qq dúvida: fiabani@gmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian

isso q você fez é igual a

 

if (isset($_SESSION["id"]) && $_SESSION["id"] == false)

{

echo "<p><b><font size='1' face='Verdana' color='#FF0000'>Você não esta logado!!!</font></b></p>";

exit;

}

 

&& = e

o codigo acima se le: Se(if) existir(isset) $_SESSION["id"] e(&&) $_SESSION["id"] for(==) falsa(false) imprimi...( {echo..} )

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente, Detros, você tem razão.

Desculpe.

 

O script que usei pra testar:

<?php

@$_SESSION = NULL;

session_start();

if (isset($_SESSION["id"]) && $_SESSION["id"] == false)
{
   echo "<p><b><font size='1' face='Verdana' color='#FF0000'>Você não esta logado!!!</font></b></p>";
   exit;
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vivendo e aprendendo mano ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso ai, falando nisso, olhem só que curioso que eu descobri.

 

Invertamos as coisas:

if ($_SESSION["id"] == false && isset($_SESSION["id"]) )
Agora sim vai dar o erro que eu esperava.

Explicação:

 

No primeiro caso, como o isset falhava, a iteração saia do if, sem ir para a segunda condição, já que esta está condicionada ao && ($_SESSION["id"] == false) e não ocorria o erro.

 

Se você colocar OR no lugar de &&, vai ocorrer erro, nas duas formas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, valeu ai pelas dicas, mais quando coloco:

if (!isset($_SESSION["id"]))

{

echo "<p><b><font size='1' face='Verdana' color='#FF0000'>Você não esta logado!!!</font></b></p>";

exit;

}

ele nao mostra a parte echo "<p><b><font size='1' face='Verdana' color='#FF0000'>Você não esta logado!!!</font></b></p>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

se nao mostra é pq você ta logado :P

 

qualquer coisa tira o ! antes do isset q vai imprimi.. mas ai fica errada a logica ...

 

vai fazendos os testes ai.. q o erro eh esse... agora eh so aprimorar ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

se nao mostra é pq você ta logado :P

 

qualquer coisa tira o ! antes do isset q vai imprimi.. mas ai fica errada a logica ...

 

vai fazendos os testes ai.. q o erro eh esse... agora eh so aprimorar ;)

Tipo, eu fiz logout e tentei entrar direto numa página e se ta com ! não mostra e se eu tira o ! ele mostra mais se eu loga ele continua mostrando que eu nao to logado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A forma correta e simples seria do modo que o colega passou acima...

 

O Erro quer dizer que o ID não está definido... mais pra ocultar esse erro, basta colocar um @ na frente do session... porém isso poderia causar um mal funcionamento do sistema ;)

 

abraço.

 

Galera, fiz o teste que o The Cod passo e resolveu o meu problema. Valeu galera, pela ajuda.....teh. mais.

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.