Ir para conteúdo

POWERED BY:

Arquivado

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

Erik

[Resolvido]trocar include dinamicamente

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passando o parametro via GET no link do menu.

 

 

- Home // www.seusite.com/index.php

- Produto // www.seusite.com/index.php?area="produtos"

- Localização // www.seusite.com/index.php?area="localizacao"

- Contato // www.seusite.com/index.php?area="contato"

 

 

Dai na hora do include você faz um switch para detectar qual pagina deve ser chamada.

 

$pagina = $_GET['area'];

switch($pagina){
case "produtos": $pagina = "produtos.php"; break;
case "localizacao": $pagina = "localizacao.php"; break;
case "contato": $pagina = "contato.php"; break;
default: $pagina = "index.php"; break;
}

include($pagina);

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.br
Pois o script vai acrescentar o '.php' e fazer a busca no mesmo diretorio aonde se econtra sua página.

 

Qualquer coisa, posta ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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.