Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Estou aqui, 21:54 da noite, esquentando minha cabeça pra fazer uma página que contenha uma include que ao clicar em algum link do menu, ele defina o valor da include, tipo assim:
1 - Tenho o menu com os seguintes itens:
- Home
- Produto
- Localização
- Contato
2 - Que abre as seguintes páginas (includes):
- home.php
- produto.php
- localização.php
- contato.php
3 - E tenho a seguinte include:
<?php require_once('$item1'); ?>
Pergunta:
Como que eu faço pra ao clicar em algum item do menu, alterar a variável $item1 e carregar a página correspondente na include (detalhe) preciso que já comece carregando a home
Por favor me ajudem, como que faço isso.
Abraços, Erik
Não recomendo a usar switch e cases...
Aonde você quer incluir a página:
$page = $_GET['page'];
$page_file = $page . ".php";
if(empty($page)) include ("home.php");
else if(file_exists($page_file)) include $page_file;
else include ("404.php");
Você cria links no seu menu assim:
<a href="/">Home</a>
<a href="/?page=produto">Produto</a>
<a href="/?page=localizacao">Localização</a>
<a href="/?page=contato">Contato</a>
O que vai acontecer, ele vai pegar a GET page e vai checkar, se a página solicitada existir em seus arquivos, ele vai incluir, se ele não encontra-la ele vai incluir a página 404. Se não solicitar nenhuma ele vai incluir a home.
E assim, voce já esta criando uma segurança para evitar o caso:
www.seusite.com.br/?page=http://www.google.com.brPois o script vai acrescentar o '.php' e fazer a busca no mesmo diretorio aonde se econtra sua página.
Qualquer coisa, posta ae...
Ola NeoHAT
Parabens, seu exemplo é bem pratico mesmo.
Mas qual o problema com switchs ? sinceramente não entendi o alerta do "Não recomendo".
por a caso teria algum jeito de burlar esse switch ae? não.. porque ele leva um default que retorna a index.php
O estilo com switch fica mais organizado, seguro e com as páginas definidas.
Além do mais não vincula o valor da variável com o nome do arquivo. Se precisar mudar o nome de um arquivo, não precisará mudar o nome em todos os links que existirem.
há uma falha simples no script que o neoHat postou
$page = $_GET['page'];
$page_file = $page . ".php";
if(empty($page)) include ("home.php");
else if(file_exists($page_file)) include $page_file;
else include ("404.php");
experimente digitar no parametro
?page=index
entrará num loop infinito e dependendo das configs do servidor, poderá travar o serviço web, tornando inacessível o sistema ou mesmo outros problemas piores como estouro de memória, etc..
outra falha é a inclusão direta de um arquivo verificando apenas se existe, mas sem saber se é permitido carregar ou não.
se possuir uma pasta .. funcoes/arquivo.php
?page=funcoes/arquivo
file_exists() permitirá pois o arquivo existe
e em consequencia, será carregado, podendo provocar algum erro.
Funciono não,
Eu criei como dito mas na hora de abrir a página ele recarrega mas exibe o conteudo da home.php
deem uma olhada no site:
www.indecvirtual.com.br/testes
eu to usando includes uma pro menu e outra pro conteúdo, será que atrapalha?
é normal num aparecer nada depois do area= (case né, que chama isso)
eu to aprendendo PHP agora e como tudo que sei, to apredendo na raça.. hehehe
Obrigado a todos pela grande ajuda que estão me dando
Funciono não,
Eu criei como dito mas na hora de abrir a página ele recarrega mas exibe o conteudo da home.php
deem uma olhada no site:
www.indecvirtual.com.br/testes
se não enviar o parâmetro não vai "funcionar"...
www.indecvirtual.com.br/?page=testes
hahahahahhahhhaha!!!!!
O negócio é bom mesmo, agora ta funcionando, eu tava colocando entre "aspas" e ai num mandava, quando o hinom colocou sem aspas eu vi o meu erro, estampado na minha cara, valeu pela dica, dei mais um grande passo no meu aprendizado de PHP... valew pessoal vejam como ta ficando o site novo:
www.indecvirtual.com.br/testes
Abraços a todos...
e mais uma vez muito obrigado
Passando o parametro via GET no link do menu.
Dai na hora do include você faz um switch para detectar qual pagina deve ser chamada.
$pagina = $_GET['area'];
switch($pagina){