Jump to content


Photo

Variavel Aparecendo Como Indefinida


  • Faça o login para participar
13 replies to this topic

#1 d1eg0.

d1eg0.

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 29/10/2010, 09:01

Ola pessoal, estou com o seguinte problema, na minha pagina esta dando o seguinte erro:

Undefined index: menu in C:\wamp\www\teste\menu_camdas\index.php on line 18


Mas minhas variaveis globais estao On, e meu código esta assim

<a href="index.php?menu=home">home</a>
<a href="index.php?menu=2">2home</a>
<a href="index.php?menu=3">3home</a>
<a href="index.php?menu=4">4home</a>

<?

	
	$menu=$_GET['menu'];
	$menu='home';
	
	if($menu=='home' || $menu==''){
		include_once('home.php');
	}

	
	
	if($menu=='2'){
		include_once('pg2.php');
	}
	
	if($menu=='3'){
		include_once('pg3.php');
	}
	if($menu=='4'){
		include_once('pg4.php');
	}

?>

Alguem sabe como resolver, reinstalei o servidor webLocal. Mas esta configurado e antes nunca havia ocorrido este erro

Vlw abraços

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 29/10/2010, 17:20

O problema não é a variável. É o $_GET. Se não tem ?menu= na url, não vai ter $_GET['menu']. Use isset() antes pra evitar a mensagem.

http://www.php.net/m...ction.isset.php

#3 d1eg0.

d1eg0.

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 29/10/2010, 19:40

O problema não é a variável. É o $_GET. Se não tem ?menu= na url, não vai ter $_GET['menu']. Use isset() antes pra evitar a mensagem.

http://www.php.net/m...ction.isset.php




   $menu=$_GET['menu'];

if(isset($menu)){
	

	if($menu=='home' || $menu==''){
		include_once('home.php');
	}

	if($menu=='2'){
		include_once('pg2.php');
	}
	
	if($menu=='3'){
		include_once('pg3.php');
	}
	if($menu=='4'){
		include_once('pg4.php');
	}
}
else
	$menu='';
?>


Esta errado:

A mensagem ainda aparece, o @ tambem serve né?

Mais uma vez me ajudando LeoB, Obrigado fico te devendo mais essa, se precisar algo só mandar MP

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 29/10/2010, 20:02

O isset é no $_GET.

if(isset($_GET['menu'])){
$menu = $_GET['menu'];
}else{
$menu = '';
}

Ou, se quiser com o @:

$menu = @$_GET['menu'];


#5 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 30/10/2010, 11:58

Bem ...

Não sei pode ser...

Talvez o seu servidor não está habilitado para sort tags <? ?>
Tente trocar por <?php ?>


As sort tags foram depreciadas.
O padrão agora é <?php ?>
E se você for fazer a prova de certificação esse é uma das questões que caem...

E já fica a dica... as variáveis globais habilitadas são um grande risco para a segurança do seu site.
Tanto que elas por padrão já estão vindo desabilitadas a partir da versão 5 do php.
E outra coisa...
Sempre é bom tratar requisições vindas diretamente da url...
Limpar html... XSS, Enfim tudo o que pode influir na segurança do seu site.

E o @ não é interessante para esconder erros certo...
O melhor mesmo é usar o isset para evitar usar variáveis que não foram criadas.
(y)
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#6 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 30/10/2010, 12:04

O que short tags tem a ver com o problema? :huh:

#7 d1eg0.

d1eg0.

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 02/11/2010, 11:39

Não entendi as short tags tambem :s

#8 carloshoroshi

carloshoroshi

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 03/11/2010, 08:05

Até onde eu sei.. tem alguns servidores que é necessário começar o php com a tag <?php.. mesmo que o bloco de notas reconheça que é uma código em php o servidor onde será hospedado os arquivos... ele não reconhece.. sendo assim.. é necessário que você.. coloque da seguinte forma :
<a href="index.php?menu=home">home</a>
<a href="index.php?menu=2">2home</a>
<a href="index.php?menu=3">3home</a>
<a href="index.php?menu=4">4home</a>

<?php

        
        $menu=$_GET['menu'];
        $menu='home';
        
        if($menu=='home' || $menu==''){
                include_once('home.php');
        }

        
        
        if($menu=='2'){
                include_once('pg2.php');
        }
        
        if($menu=='3'){
                include_once('pg3.php');
        }
        if($menu=='4'){
                include_once('pg4.php');
        }

?>

Edição feita por: carloshoroshi, 03/11/2010, 08:05.


#9 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 03/11/2010, 10:01

Se short tags fosse o problema, nem seria gerado o erro. O código php seria impresso como um texto comum.

#10 d1eg0.

d1eg0.

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 03/11/2010, 14:30

Se short tags fosse o problema, nem seria gerado o erro. O código php seria impresso como um texto comum.



Concordo, as short tags são para distinguir os códigos php de html em geral.

O meu problema era no notice mesmo.


resolvi na dica do LeoB e usei assim:

<?
  $menu= isset($_GET['menu']) ? $menu:'';
?>


#11 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 03/11/2010, 15:07

Só consertando:

$menu = isset($_GET['menu']) ? $_GET['menu'] : '';


#12 d1eg0.

d1eg0.

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 04/11/2010, 14:54

Só consertando:

$menu = isset($_GET['menu']) ? $_GET['menu'] : '';



Assim fica mais completo, mas ele vale para qualquer caso?

ou apenas este meu no uso do menu?

#13 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 04/11/2010, 15:12

Como assim pra qualquer caso?

#14 d1eg0.

d1eg0.

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 09/11/2010, 08:50

Acho que eu não havia entendido direito.

Mas agora sim, obrigado a todos.

podemos marcar como resolvido




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq