27 de janeiro de 2009

Como inserir uma página dentro de outra com ajuda do PHP

Uma duvida de várias desenvolvedores web é como inserir uma página dentro de outra, dando o efeito de um frame. Existe várias maneiras de se fazer isso, e na minha opinião a melhor é através de includes com PHP.

O primeiro passo para fazer isso é instalar o Apache e o PHP.


O PHP, ao contrário do HTML, é uma linguagem sever-side. O servidor é que faz todo o trabalho, enquanto que o cliente (um browser por exemplo) só renderiza o resultado, que são as páginas HTML, Javascript, CSS, imagens, sons, etc. Por esse motivo a instalação do Apache é necessária, porque ele é o servidor que vai transformar todos os comandos em PHP que forem digitados em HTML para que o browser entenda.

Depois de ter o Apache e o PHP funcionando, é hora de começar a brincar!

HTML

<body>
    <?php include("topo.php") ?>
    <?php include("menu.php") ?>
    <div id="conteudo">
        Conteudo do site
    </div>
    <?php include("rodape.php") ?>
</body>

Nesse exemplo de código foram incluídas 3 páginas dentro de uma só. É como usar 3 <IFRAMES> dentro de uma página, mas com a vantagem de fazer isso sem que o usuário perceba.

O código que fez essa "mágica" é o include do PHP. Funciona assim:

<?php - Indica aonde começa uma tag php.
include() - É o comando que será utilizado.
"nomedapagina.php" - É a página que vai ser incluida.
?> - fim da tag php

É importante criar as páginas "topo.php", "menu.php", "rodape.php" e todas as outras que vão ser incluídas. Nessas páginas é só usar o trecho do HTML que você quer que elas usem. Por exemplo o "menu.php"

HTML - menu.php


<div id="menu">
<ul>
    <li><a href="#">Link 1</a></li>
    <li><a href="#">Link 2</a></li>
    <li><a href="#">Link 3</a></li>
    <li><a href="#">Link 4</a></li>
</div>

Não é necessário colocar toda aquela sequência HTML > HEAD > BODY nas páginas que serão incluídas, só é necessário o código HTML que realmente vai ser usado.

Quando um visitante vê uma página que o PHP foi usado, ele nem percebe pois o servidor (no nosso caso o Apache) transforma o código PHP em HTML.

@Em especial para o leitor Carlos Eduardo.

10 comentários:

Carlos Eduardo disse...

Muito bom o post. Brigado por atender ao meu pedido de dúvida.
Aposto que outros desenvolvedores web ficaram gratos como eu. Abraço.

Carlos Eduardo disse...

Só uma correção gravíssima de português: "ficarão gratos . . ."
rsrsrsrs Até.

Guido disse...

Valeu Carlos, qualquer sugestão/duvida/critica é entrar em contato. :)

Zuera disse...

Eu gostaria de sabrer se tem como !
eu define o tamanho que eu querro que a pagina abra !

Regina disse...

Ajudou-me bastante! foi a maneira mais fácil que encontrei.

Eugênio Fontes disse...

O mais interessante a saber sobre o include é que sua função é incluir o texto (código) de um arquivo externo dentro de outro arquivo, exatamente na posição do include. E por isso também não se deve escrever todo um código html nos arquivos apontados, pois o código completo será a "página pai" e não o "código filho". Caso contrário, o resultado será inconveniente.

Kiko disse...

oi, essa parte eu ja percebi, agora preciso de fazer uma questao, nos frames de html, da para fazer um link do tipo
a href e depois o target do link para a frame que queremos
tipo para top, blank ou para o nome da frame criada
supondo que eu faço um php
com
include (banner.php)
include (content.php)
include (footer.php)

ha alguma maneira de fazer como nos frames os links do banner aparecerem em content?
espero que esteja a ser claro nakilo que estou a perguntar, se souberem como fazer isso por favor digam kk coisa
o meu mail é kjonh2@hotmail.com
abraço e desde ja obrigado ;)

Anônimo disse...

Muito obrigado Guido. Foi-me de muito valor tua dica.

Site Ponto de Partida disse...

Somente uma correção na seguinte frase:
"Uma dúvida de várias desenvolvedores web..."

Se várias estiver se referindo a desenvolvedores, verifique a concordância de gênero. O correto seria "vários desenvolvedores web".
Att

Replicas de relogios disse...

tenho uma loja e gostaria de colocar ela dentro de outro site via IFRAME porem quando faço isso fica tudo branco... alguem pode me ajudar com isso? a loja é http://www.watchfamosos.com.br