Jump to content

Undefined variable: login_status


hfmalves
 Share

Recommended Posts

Não o que poderá estar errado, funcionou na perfeição até inserir novas tabelas a BD.

Dá-no a indicação de variável não definida na linha 4 quando esta de facto definida, alguma ideia?

<div align="right"><br>
 <img src="imagens/autorent_top.gif" width="600" height="50"><br>
 <a href="index.php">Aluguer</a> | <a href="index.php?pagina=frota">Frota de Veículos</a>
 | <a href="index.php?pagina=agencias">Agências</a> <?php if($login_status==1) echo ""; else echo "| <a href=\"index.php?pagina=registo&status=registo\">Registo</a>"; ?>
 | <a href="index.php?pagina=contactos">Contactos</a>
</div>
Link to comment
Share on other sites

Onde é que a variável está definida?

Através da sessão :

<?php
if ($_SESSION['login_status']==1) {
echo "Utilizador: <b>".$_SESSION['login_utilizador']."</b><br>";
echo "<a href=index.php?pagina=logout>Logout</a>";
} else {
include("login.php");
}
?>

segue o código da página index.php onde tbm dá o mesmo erro, só comecou a aparecer desde que criei uma nova tabela no administrador para as novidades, não sei se me ta a falhar alguma coisa, é a minha 2 aplicação completa em php.

<?php
session_start();
//session_register("login_status");
//session_register("login_utilizador");
?>
<html>
<head>
<title>ACar</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="acar.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="600" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td>
<!-- PARTE DE TOPO -->
<?php
include("topo.php");
?>
<!-- PARTE DE TOPO -->
</td>
</tr>
<tr>
<td>
    <table width="100%" border="0" cellspacing="0" cellpadding="3">
    <tr>
        <td width="75%" valign=top><br>
<!-- CORPO DA PAGINA ESQUERDA -->
<?php
if($_REQUEST['pagina']=="") {
include("main.php");
} else {
include($_REQUEST['pagina']."_main.php");
}
?>
<!-- CORPO DA PAGINA ESQUERDA -->
</td>
        <td width="25%" valign=top><br>
<!-- CORPO DA PAGINA DIREITA -->
<?php
if ($_SESSION['login_status']==1) {
echo "Utilizador: <b>".$_SESSION['login_utilizador']."</b><br>";
echo "<a href=index.php?pagina=logout>Logout</a>";
} else {
include("login.php");
}
?>
<br>
<?php
include("destaques.php");
?>
<br>
<?php
include("novidades.php");
?>
<!-- CORPO DA PAGINA DIREITA -->
</td>
    </tr>
    </table>
</td>
</tr>
<tr>
<td>
<!-- PARTE DE BAIXO -->
<?php
include("final.php");
?>
<!-- PARTE DE BAIXO -->
</td>
</tr>
</table>
</body>
</html>
Link to comment
Share on other sites

No código que apresentaste indica-me onde defines a varíavel $login_status

Posso não me estar a explicar bem, mas segundo as minhas bases de programação posso verificar a sessão do utilizador e condiciona-la, ou seja, o trecho de código o primeiro, eu apenas estou a verificar a sessão - se estiver com sessão iniciada aparece o nome do utilizador, caso contrario aparece a página de login.php.

Eu tive dificuldade nesta parte, e pesquisei varios websites com esta informação nomeadamente o proprio php.net.

O que me causa confusão é que so não funciona no index.php, se eu abrir a página frota.php, onde tem os carros disponiveis funciona sem problema, daí a minha dúvida.

Link to comment
Share on other sites

Posso não me estar a explicar bem, mas segundo as minhas bases de programação posso verificar a sessão do utilizador e condiciona-la, ou seja, o trecho de código o primeiro, eu apenas estou a verificar a sessão - se estiver com sessão iniciada aparece o nome do utilizador, caso contrario aparece a página de login.php.

Eu tive dificuldade nesta parte, e pesquisei varios websites com esta informação nomeadamente o proprio php.net.

O que me causa confusão é que so não funciona no index.php, se eu abrir a página frota.php, onde tem os carros disponiveis funciona sem problema, daí a minha dúvida.

fizeram uma pergunta.

porque razão em vez de responderes à pergunta, começas a fazer uma dissertação sobre algo que (para mim) soa a um argumento sobre o orçamento de estado da Coreia do Sul (irrelevante ...)

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Não estás a definir correctamente no teu código a variável login_status.

Isto é definir uma variável:

$_SESSION["login_status"] = 1;

esse erro existe porque não a estás a definir previamente.

Se quiseres fazer a verificação correctamente tens de, também, verificar se essa variável existe...

O teu if terá de passar a:

if (isset($_SESSION['login_status']) and $_SESSION['login_status']==1)

Link to comment
Share on other sites

fizeram uma pergunta.

porque razão em vez de responderes à pergunta, começas a fazer uma dissertação sobre algo que (para mim) soa a um argumento sobre o orçamento de estado da Coreia do Sul (irrelevante ...)

Não me parece que esteja correcta a tua apreciação, eu apenas comentei porque é uma sessão ou seja nem sequer sabia que teria de ser definida como variável normal (minha interpretação errada) - nem sequer estava a entender =S - porque como diz o comentário abaixo ajudou-me e corrigiu o problema.

A variável esta de facto lá "$_SESSION["login_status"] = 1;" para mim era uma sessão não variável, fiz confusão e limitei-me a expor o contexto.

Desde já agradeço o facto de teres ajudado.

Não estás a definir correctamente no teu código a variável login_status.

Isto é definir uma variável:

$_SESSION["login_status"] = 1;

esse erro existe porque não a estás a definir previamente.

Se quiseres fazer a verificação correctamente tens de, também, verificar se essa variável existe...

O teu if terá de passar a:

if (isset($_SESSION['login_status']) and $_SESSION['login_status']==1)

Obrigado mesmo ! =)

Não estava a compreender, por na minha cabeça coloquei isso com definição de sessão e não como variavel.

Agradeco de facto a tua ajuda, assim já tenho quase pronto um sistema de aluguer de automóveis com administração.

Só um aparte, apenas por curiosidade, existe alguma "regra específica" para definir a variável dessa forma ?

Sendo que em outras páginas, com cookies na plataforma, numa outra página qualquer ao abrir normalmente não aparece este erro, será aconselhável alterar?

Cumps;

Link to comment
Share on other sites

então ficas a saber que :

$_SESSION["login_status"]

não é uma variável, mas sim um elemento do array associativo $_SESSION ($_SESSION sim, é uma variável) em que a chave do elemento toma o valor 'login_status'.

logo, todo o argumento do tópico que te "ajudou" é um disparate em termos de PHP quando diz que tens de "declarar a variável dessa forma".

e tu deverias pensar naquilo que já deverás ter lido em algum lado : o que é uma variável de sessão e como acedes (lês) os valores dessas variáveis ?

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

então ficas a saber que :

$_SESSION["login_status"]

não é uma variável, mas sim um elemento do array associativo $_SESSION ($_SESSION sim, é uma variável) em que a chave do elemento toma o valor 'login_status'.

logo, todo o argumento do tópico que te "ajudou" é um disparate em termos de PHP quando diz que tens de "declarar a variável dessa forma".

e tu deverias pensar naquilo que já deverás ter lido em algum lado : o que é uma variável de sessão e como acedes (lês) os valores dessas variáveis ?

Eu percebo e respeito o teu conhecimento acompanho de facto alguns do teus comentários, se é um disparate ou não, funcionou é que me importa.

Entretanto tomei a liberdade de enviar um email expondo a minha situação a um dos meus professores Mestre em Gestão de Sistemas de Informação e Doutorado de Arquitecturas de Computadores e Sistemas de Informação da na qual me enviou o detalhe dos erros e a correcção da mesma.

E ele fez da mesma forma e expôs a sua opinião da mesma forma eu aprendi a linguagem em grande parte do código essencial aprendo às cabeçadas só acho que é importante é a forma como se fala se não querias ajudar não comentavas "a e tal sou o maior" - foi o que fizeste e não ajudaste em nada tornando os teus comentários como o orçamento de estado da Coreia do Sul (irrelevantes).

Sendo absurdo ou não, sabendo ou não, a torto ou a direito fiz uma aplicação do 0 de aluguer de automóveis com administração, as pessoas aprendem com os erros no entanto os erros variam apenas de uma configuração do php.ini com a inclusão do error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE.

E respondendo para finalizar a tua maneira:

Sabes que um array é blá blá bla, sessão e não sei que.. é como tirares a carta de condução CAT B e saberes a velocidade dos camiões não te serve para nada se quiseres conduzir um camião tens de tirar a carta correspondente.. (irrelevante)

Link to comment
Share on other sites

Entretanto tomei a liberdade de enviar um email expondo a minha situação a um dos meus professores Mestre em Gestão de Sistemas de Informação e Doutorado de Arquitecturas de Computadores e Sistemas de Informação [...]

In questions of science, the authority of a thousand is not worth the humble reasoning of a single individual.

E ele fez da mesma forma e expôs a sua opinião da mesma forma eu aprendi a linguagem em grande parte do código essencial aprendo às cabeçadas só acho que é importante é a forma como se fala se não querias ajudar não comentavas "a e tal sou o maior" - foi o que fizeste e não ajudaste em nada tornando os teus comentários como o orçamento de estado da Coreia do Sul (irrelevantes).

O teu professor disse-te que para definires a variável $login_status devias definir o $_SESSION['login_status'], foi? É que isto nas versões mais recentes do PHP penso que já nem é possível, e nas outras é considerado muito má prática.

Ainda não percebi bem qual era o problema que tinhas, mas parece-me que misturas-te uma variável $login_status com um elemento do $_SESSION. Isto causou a confusão inicial, pois tinhas um erro com a variável $login_status e depois mostravas algo relacionado com o $_SESSION, daí terem insistido para mostrares a parte relativa ao $login_status, coisa que não fizeste.

Mais estranho ainda é o facto de dizeres que alterações no $_SESSION resolveram-te o problema do $login_status. Acho que a única maneira de isso acontecer é se o register_globals estiver activo, o que é muito má prática. Daí eu também achar que não resolveste devidamente o problema que tinhas.

Ou seja, dá a ideia que, apesar das criticas que fazes a quem continua a tentar alertar-te para potenciais problemas no teu código, ainda não percebeste correctamente o problema que tinhas, e provavelmente não o corrigiste da melhor forma.

PS: Tem também mais atenção à escrita. Tens frases enormes praticamente sem pontuação, que não fazem sentido (e que obrigam quem lê a adivinhar o que é que pretendias escrever).

  • Vote 1
Link to comment
Share on other sites

xiiii vai uma confusão entre a $_SESSION["login_status"] e $login_status que nem digo nada!

Eu percebo e respeito o teu conhecimento acompanho de facto alguns do teus comentários, se é um disparate ou não, funcionou é que me importa.

Se tu tivesses muita fome e tivesses de escolher entre comer frango assado e frango cru tu farias o quê? Comerias o cru porque terias dificuldade em assar já que o que importa é matar a fome? 😄

Vai com calma estamos aqui para ajudar, mas não te vamos dizer logo a solução, porque assim não aprendias nada.

Contador de calorias: caloriaspordia.com

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.