Ir para conteúdo

POWERED BY:

Arquivado

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

ebotega

Estrutura de um site

Recommended Posts

Ebotega, eu faço da seguinte forma, acho que é a mais segura, mesmo dando um pouco (quase irrelevante) mais de trabalho:

 

Uso o Switch para tratar os dados vindos do $_GET assim:

 

switch ($pag)
{
default:
include "paginas/inicio.php";
break;

case "login":
include "paginas/login.php";
break;

case "cadastro":
include "paginas/cadastro.php";
break;
}

 

Dessa forma você preserva o header, menu, footer, etc... E fica mais seguro do que dar o include direto na página chamada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehehe realmente a dúvida do cara tava bem bagunçada. VAleu por organizar heheh.

 

Bom, mas, depois de alguns anos no PHP eu aprendi a NUNCA MAIS ficar dando includes da forma como foi proposto (dar include segundo algum parâmetro no get).

 

Eu uso, em qualquer página, um esquema pra pegar as partes repetidas das páginas a partir de um tema (que pode ser mudado facilmente).

 

Crio uma pasta para cada tema, e chamo estas páginas via include:

Temas
- Azul
-- head.php - contém o início da página, tag head, metatags, chamadas a css, etc
-- topo.php - contém o html do topo
-- menu.php - contém o menu
-- footer.php - contém o rodapá
-- style.css
-- scripts.js
- Verde
-- head.php - contém o início da página, tag head, metatags, chamadas a css, etc
-- topo.php - contém o html do topo
-- menu.php - contém o menu
-- footer.php - contém o rodapá
-- style.css
-- scripts.js

 

Veja que nas páginas tipo 'menu.php' também é PHP, ou seja, posso carregar o menu via banco de dados.

 

Esse esquema me dá uma flexibilidade muito grande, sem oferecer muitos riscos.

 

Basicamente o seguinte:

 

Se tenho uma index ela ficará:

 

<?php
include('functions.php');
$tema = 'temas/Azul';
include($tema.'/head.php');
include($tema.'/topo.php');
include($tema.'/menu.php');
?>
<div id='content'>
 Bem vindo ao meu site
</div>
<?php
include('footer.php');
?>

 

Se tenho uma página de produtos, ela ficará

 

<?php
include('functions.php');
$tema = 'temas/Azul';
include($tema.'/head.php');
include($tema.'/topo.php');
include($tema.'/menu.php');
?>
<div id='content'>
 Produto 1
 Produto 2
 Produto 3
</div>
<?php
include('footer.php');
?>

 

Se tenho uma página específica do produto X, (e não quero o menu nela) ela ficará:

 

<?php
include('functions.php');
$tema = 'temas/Azul';
include($tema.'/head.php');
include($tema.'/topo.php');
//tchau menu include($tema.'/menu.php');
?>
<div id='content'>
 Sou o produto 1
 Faço isso e aquilo
 Me compre
 Botão comprar
</div>
<?php
include('footer.php');
?>

 

Veja que posso, inclusive, colocar um tema diferente pra cada página sem interferir no código principal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Igor,

 

Mas dessa forma que citei, tem como fazer XSS?

 

Pq assim, a URL iria ficar da seguinte forma:

www.site.com.br/index.php?pag=login

 

E com o switch, no caso do login, iria redirecionar para a pagina 'login.php';

 

Se o cara colocar lah dessa forma por exemplo:

www.site.com.br/index.php?pag=www.sitecomexploit.com.br/exploit.php

 

A página que seria aberta, seria a página default do switch, ou seja, "Inicio.php"...

 

Ou seja, só iria abrir as páginas que eu defini no switch. Se ele colocar qualquer coisa diferente das variaveis permitidas lá, vai pra página inicial.

 

Sinceramente não sei se tem como fazer XSS dessa forma... Fica a dúvida aí... Vou até dar uma pesquisada...

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nukes, entendo o que você quis dizer pois faço da mesmo forma, ou seja, já que o parâmetro não será encontrado, o sistema mostra outra página. Porém agora estou 'testando' a forma que o micox postou, incluindo topo, menu, rodapé... é também o exemplo que o Igor comenta no exemplo da página de produtos e suas categorias.

 

Micox, gostei do seu esquema, mas onde ficam as tags que fecham o <body> e o <html> (</body> e </html>), pois as que abrem estão no arquivo 'head.php';

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ebotega, perceba q o micox nao postou a estrutura de um site, e sim de uma pagina estatica, dando a ela o template estatico, pois ele nao muda o conteudo...nem com banco de dados, nem recebendo parametros...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ué, Igor, não entendi.

 

Qual seria o problema para colocar no meu esquema uma página que puxe coisas do banco de dados ou que trate dados vindos via GET ou POST?

 

Vou até colocar aqui basicamente como está a index do meu site tadarank.com

 

A index puxa dados do BD, faz ordenação e cria uma tabela.

 

Lá no tadarank.com tenho outras páginas como qualquer site php complexo: login, cadastro, autenticação de user, etc.

 

Nada impede de colocar funções php neste modelo que uso.

 

Vejam a index (ocultei algumas coisas né? hehe):

<?php
/** start micoxlib (required)	******************************************/
require('./m-configs/config.php');

/** optional modules	**************************************************/
m_lib('db.php');
//m_lib('email.php');
//m_lib('forms.php');
//m_lib('validation.php');


/** call your site-funcs, make your php functions/instructions here ******/

$sql = "SELECT sql que puxa as notas do BD  ORDER BY ".filtraGet('ordem');
//gerando a primeira tabela html com base na sql e no array linkmap
$tabela_rank = db_makeTable($sql,'		',$linkmap,'aid',30,'index.php');

//contando webmasters, sites e anunciantes
$webmasters = db_countLines('users','usergroups_id=1','index.php#webs');
$sites = db_countLines('sites','','index.php#sites');

/** theme arquives		**************************************************/
m_theme('inc-head.php'); 
m_theme('inc-top.php'); 

/** conteúdo principal HTML **********************************************/
?>
<div id='content'>
<p>Auxiliando <strong>Webmasters</strong> a escolherem sistemas de afiliados para seus sites. <a href='cadastro-webmaster.php'>Sou webmaster, quero me cadastrar.</a></p>
<p>Auxiliando <strong>Sistemas de Afiliados</strong> a descobrirem suas falhas. <a href='cadastro-afilia.php'>Sou responsável por um Sistema de Afiliados, quero me cadastrar.</a></p>
<h1>Os melhores sistemas de afiliados...</h1>
<h3>...Segundo Webmasters:</h3>
<table id='rank'>
	<?php echo $tabela_rank; ?>
</table>
<p>Média das avaliações feitas por <a href='lista-webmasters.php'><?php echo $webmasters ?> webmasters</a> donos de <a href='lista-sites.php'><?php echo $sites ?> sites cadastrados.</a></p>
<p><a href='add-avalia.php' class='button'>Sou Webmaster. Quero Avaliar também!</a></p>

</div>
<?php
/** theme arquives **/
m_theme('inc-bottom.php');
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@micox, problema, estava fora do escopo do topico,...seu novo exemplo eh um template dinamico, agora sim ele puxa do banco e faz tratamentos, anteriormente nao fazia isto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque não usar um framework?

 

Vantagens:

 

1 - Sistema de seleção com urls amigáveis já pronto (testado/em constante atualização);

2 - Template e layout padronizados;

3 - Modelo MVC;

4 - Ganho em tempo - não é necessário criar tudo cada vez que inicia um novo projeto;

5 - Centenas (ou milhares) de outros programadores compartilhando a mesma estrutura - correções de bugs, novas idéias, aperfeiçoamento, etc.

 

Se cada um "inventar" uma estrutura para seus sites como ficará a manutenção, principalmente se for feita por outra pessoa.

Do meu ponto de vista um site profissional tem que ser criado usando como base um framework - seja qual for.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Neos, não manjo muito de OO quem dirá de frameworks, no meu caso tenho que me virar desenvolvendo uma estrutura prática para poder reutilizá-la de forma rápida e abrangente.

 

Que estrutura basicamente você usa ou usaria Neos?... mais ou menos nesses exemplos que foram expostos aqui.

 

Micox, onde você abre a tag <body>? no "topo.php"? E ela fica aberta nessa página fechando apenas no "footer.php"?

 

E caso o menu tenha algum javascript e css, você deixa no menu.php ou no head.php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

um framework necessita de tempo de aprendizado, conhecer os design patterns, OO, muita coisa....mesmo q seja um simples framework....mesmo os mais simples e famosos como cake, symfony, kohana precisam disto

 

PS nao citei o Zend framework, pois alem de ser o mais completo, eh o mais complexo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

abro o body em inc-top.php

fecho o body em inc-bottom.php

 

css deixo em inc-head.php (onde também fica a declaração doctype, heads, tag title, metatags etc)

javascript deixo em inc-bottom.php (como mandam as regras de velocidade)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Javascript no final do código :huh: Tenho que rever os meus conceitos mesmo...

 

Onde consigo esse tipo de informação, não me recordo de ter visto isso antes, contudo lembrando de alguns scripts que vi por aí, lembro que estavam antes do </body>.

 

Isso que eu digo sobre saber como é a estrutura de um site, sei que cada um tem o seu modo de desenvolver, mas existem dicas e até alguns padrões (que não sejam design patterns) que ajudam... tipo boas práticas.

 

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendo o por quê de não ser utilizado metodos get e post, com include. O php tem várias formas de se validar qualquer informação vinda via ambos metodos. É necessário tratar sempre parâmetros passados por URL e conteúdo submetidos via formulário. Pois, estes estão expostos e podem serem manipulados pelo usuário.

É interessante fazer uma estrutura OO. Recomendo ler o livro de PHP Orientado Objetos do Pablo Dall'Oglio. Vais descobrir que o PHP é excelente! Mas a utilização de Frameworks agiliza muito o processo de desenvolvimento. Entretanto, se não tiver o conhecimento das técnicas de OO vai ter uma curva de aprendizado bem maior. Seja qual framework que você for utilizar, veja qual tem uma comunidade forte e uma documentação bem elaborada. Mas o OBJETIVO de todos os frameworks em php é muito semelhante. Trabalho com Zend & Symfony. Já utilizei os dois juntos em projetos de grande envergadura. Mas Ambos são excelentes na minha opinião.

micox -> você é o cara! Já li muita coisa sua neste fórum, todos de grande valia. Obrigado por dividir o conhecimento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendo o por quê de não ser utilizado metodos get e post, com include. O php tem várias formas de se validar qualquer informação vinda via ambos metodos. É necessário tratar sempre parâmetros passados por URL e conteúdo submetidos via formulário. Pois, estes estão expostos e podem serem manipulados pelo usuário.

É interessante fazer uma estrutura OO. Recomendo ler o livro de PHP Orientado Objetos do Pablo Dall'Oglio. Vais descobrir que o PHP é excelente! Mas a utilização de Frameworks agiliza muito o processo de desenvolvimento. Entretanto, se não tiver o conhecimento das técnicas de OO vai ter uma curva de aprendizado bem maior. Seja qual framework que você for utilizar, veja qual tem uma comunidade forte e uma documentação bem elaborada. Mas o OBJETIVO de todos os frameworks em php é muito semelhante. Trabalho com Zend & Symfony. Já utilizei os dois juntos em projetos de grande envergadura. Mas Ambos são excelentes na minha opinião.

 

por favor releia o topico inteiro...

Compartilhar este post


Link para o post
Compartilhar em outros sites
por favor releia o topico inteiro... 

Desculpa Igor, mas não se faz necessário ler duas vezes.

A dúvida do colega é simples. Ele deseja saber como é estruturado um site! Não podemos orientar programadores iniciantes em um linguagem de forma a limitá-los. Acho que o mais importante no forum é dar a liberdade da "construção lógica" e direcionar para a um caminho que, outrora tomamos e concluímos que foi valioso. Claro, respeitando a opinião de todos assim, como respeito a sua. Justifico-me apenas por não ver citações de fonte de pesquisa. Eu tomei a liberdade de o fazer. Óbvio, pensando na dúvida do nosso colega ebotega, unicamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites
por favor releia o topico inteiro... 

 

Desculpa Igor, mas não se faz necessário ler duas vezes.

A dúvida do colega é simples. Ele deseja saber como é estruturado um site! Não podemos orientar programadores iniciantes em um linguagem de forma a limitá-los. Acho que o mais importante no forum é dar a liberdade da "construção lógica" e direcionar para a um caminho que, outrora tomamos e concluímos que foi valioso. Claro, respeitando a opinião de todos assim, como respeito a sua. Justifico-me apenas por não ver citações de fonte de pesquisa. Eu tomei a liberdade de o fazer. Óbvio, pensando na dúvida do nosso colega ebotega, unicamente.

 

sim con certeza...mas veja q eu dei-lhe uma estrutura onde evita certos vicios, erros de logica, e falha de seguranca...veja q você se contradiz....

Não podemos orientar programadores iniciantes em um linguagem de forma a limitá-los

você nao pode limita-los, mas você pode dar um passo maior q sua perna?

você aprendeu primeiro a correr ou engatinhar?

 

do q adianta saber OO se nao souber cada particulariedade da linguagem? isso se chama experiencia...

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.