Dúvida, estrutura Re:Dúvida, estrutura
Transcrição
Dúvida, estrutura Re:Dúvida, estrutura
Dúvida, estrutura Posted by dcorreia - 2007/07/25 18:52 _____________________________________ Será que alguem me podia dar alguma dica, ou dizer-me onde poderia encontrar informação para melhorar a estrutura da programação em php. Pois queria começar a exprimentar desenvolver um projecto maior para melhorar a minha forma de programar. Pois neste momento fico um pouco per:S dido quando o projecto fica maior:S ============================================================================ Re:Dúvida, estrutura Posted by yoda.pt - 2007/07/27 04:59 _____________________________________ Boas.. Este é o meu metodo de programar (pode ficar confuso se não for bem documentado): 2 paginas apenas, independentemente do que se tratar o site: index.php e uma pagina só com funções. A partir daqui, no index levo uma variável que irá ser imprimida apenas no fim do script, e que ao longo do mesmo vai concatenando a informação necessária. As várias funções do site são passadas por URL, por meio de $_GET, sendo depois validadas no script por um switch, e chamada a devida função se necessário. Um exemplo: <? session_start(); $display.='<html><head></head><body>'; switch ($_GET) { case "clientes": { switch ($_GET) { case "ver": { $display.=ver(); break; } default: { $display.=listar(); } } break; } case "produtos" { $display.=produtos(); break; } default: { $display.=main(); break; } } $display.='</body></html>'; PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 1 October, 2016, 03:11 echo $display; ?> Este era o suporto index.. Penso que deu para perceber o funcionamento .. a pagina das funções contem apenas as funções que são chamadas no index. Espero ter ajudado alguma coisa :P Fica aqui o meu mail no msn se for preciso algum esclarecimento: [email protected] Post edited by: yoda.pt, at: 2007/07/27 05:06 ============================================================================ Re:Dúvida, estrutura Posted by mAiN_iNfEcTiOn - 2007/07/28 02:34 _____________________________________ Bem, no que toca ao que eu faço... aproveito e vejo pelos vossos comentários se é seguro ou não :P Isto é o código do carregamento das páginas de diferentes secções do site... tudo carregado no index.php, claro. <? // ADQUIRIR O MÓDULO A INSERIR $modulo="home"; // VALOR POR DEFEITO if(isset($_GET)) { $modulo=urlencode($_GET); } require("includes/menu.php"); // CARREGA O MÓDULO SE EXISTIR if(is_dir(BASE_PATH) && file_exists(BASE_PATH . $modulo . ".php")) require(BASE_PATH . $modulo . ".php"); else header("location:index.php?module=home"); ?> Na prática o que ele faz é recebe um parâmetro pelo URL, na variável "modulo" (ex: http://www.teste.com/index.php?modulo=registo) e verifica se existe algum ficheiro chamado registo.php na pasta BASE_PATH (que é uma constante definida por mim que guarda o caminho da pasta dos ficheiros). Se existir, mostra... senao, mostra a página principal. Post edited by: mAiN_iNfEcTiOn, at: 2007/07/28 02:39 Post edited by: mAiN_iNfEcTiOn, at: 2007/07/28 02:39 ============================================================================ Re:Dúvida, estrutura Posted by tiago - 2007/07/28 10:02 _____________________________________ Viva! require(BASE_PATH . $modulo . ".php"); PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 1 October, 2016, 03:11 require(BASE_PATH . basename($modulo) . ".php"«»); basename — Retorna a parte nome do arquivo do caminho/path Descrição: string basename ( string $path ) Dado uma string contendo um caminho para um arquivo, essa função irá retornar o nome base do arquivo. Se o nome do arquivo termina com o sufixo, este também será retirado. No Windows, tanto a barra (/) quanto a barra invertida (\) são usadas como caracter de separacao do caminho. Em outros ambientes, somente a barra (/). Exemplo do basename() <?php $caminho = "/home/httpd/html/index.php"; $arquivo = basename ($caminho); // $arquivo = "index.php" $arquivo = basename ($caminho,".php"«»); // $arquivo = "index" ?> ------------------------------------O que eu costumo fazer para facilitar ainda mais em projectos 'grandes', é efectuar o load dos modulos e processamento de toda a página no buffer. Exemplo: <?php ob_start(); include( "modulo1" ); include( "modulo2" ); $autenticado = 0; echo "teste"; echo "teste2"; if( $autenticado == 0 ) { header("Location: login.php"«»); } $conteudo = ob_get_contents(); ob_end_clean(); if( trim( $conteudo ) ) echo $conteudo; ?> O exemplo anterior serve para salientar a grande vantagem de colocar a página no buffer, isto é, como não é feito nenhum output (só no buffer) existe a possibilidade de chamar a função header(); em qualquer local sem que seja apresentada a tal mensagem "headers already sent". Outra vantagem é o output da página ficar, neste caso, na variavel $conteudo. Pode-se efectuar as alterações que se quiser a essa mesma variável/conteúdo... Espero ajudar alguem, Tiago Lopes PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 1 October, 2016, 03:11 ============================================================================ Re:Dúvida, estrutura Posted by mAiN_iNfEcTiOn - 2007/07/28 19:48 _____________________________________ ahm tiago... n percebi a tua correcção... então se os parâmetros tendem a ser: index.php?modulo=registo pk raio é que eu havia de fazer: basename($modulo) Isso é para casos do tipo: index.php?modulo=registo.php onde eu tiro do "registo.php" a string "registo". Juro que não percebi a utilidade! ============================================================================ Re:Dúvida, estrutura Posted by tiago - 2007/07/30 14:53 _____________________________________ Viva! imagina a seguinte função: include( $_GET . ".php" ); eu coloco num servidor que não interprete PHP o ficheiro ola.php com o seguinte código: <?php echo "ola"; ?> se eu colocar no url apenas: modulo=http://omeusite.com/ola o include em cima referido vai completar a variavel "$_GET" com: http://omeusite.com/ola.php o basename serve apenas para garantir que a variavel modulo vai ter únicamente o nome do ficheiro, e não coisas estranhas como: "../../ficheiro"... Se precisares de mais exemplos, diz... :) Abraços, Tiago Lopes ============================================================================ Re:Dúvida, estrutura Posted by mAiN_iNfEcTiOn - 2007/09/24 01:56 _____________________________________ if(isset($_GET)) PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 1 October, 2016, 03:11 { $modulo=urlencode($_GET); } Mas a funçao urlencode já anula o efeito das "/". Assim, "../.." ficaria "..%2F.." ao que verificando se existe algum ficheiro com o nome: "/teste/..%2F...php" ele iria dizer k nao existe :) Post edited by: mAiN_iNfEcTiOn, at: 2007/09/24 01:59 ============================================================================ Re:Dúvida, estrutura Posted by miguelp - 2007/09/28 13:07 _____________________________________ caros algum de voçês ja ouviu falar de URI components? vejamos algo tipo: www.teste.com/index.php?modulo=news transforma-se em algo tipo www.teste.com/index.php/news com um pequeno ficheiro .htaccess ainda fica melhor www.teste.com/news para pegar no modulo podemos no index principal usar algo tipo: define('APP_MODULES','modulos/'); include(APP_MODULES . uri->segment(1) . '.php'); mas tudo isto ainda pode ser implementado de forma diferente, aqui ficam algumas ideias: http://brunotorres.net/urls http://brunotorres.net/urls-again divirtam-se :P Post edited by: miguelp, at: 2007/09/28 13:20 ============================================================================ Re:Dúvida, estrutura Posted by mAiN_iNfEcTiOn - 2007/09/29 11:47 _____________________________________ Não querendo desfazer o teu post miguelp, acho que isso não vem ao caso.... Aliás, o propósito da segmentação do endereço é puramente estratégico... É certo que fica muito bonito e coisa e tal.. Mas a ideia principal da segmentação é não dar a conhecer os directórios (pelo menos, pela maneira mais óbvia) contidos no alojamento. Organiza o código, em parte, pois sabes sempre qual o segmento que traz informação. Mas, sendo sincero, o único momento onde usei segmentação de URI's foi no Code-Igniter... (Mais uma vez, nao desfazendo o teu post, que acho BASTANTE interessante e estou a investigar mais sobre o assunto) PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 1 October, 2016, 03:11 Qualquer blasfémia, heresia ou demais pecados que tenha efectuado neste post, tenham em atenção que sou ateu. :D E acordei agora, portanto estou de mau humor! ============================================================================ PHP-PT.com Forum - Comunidade Portuguesa de PHP Joomlaboard Forum Component version: 1.1.4 Stable Generated: 1 October, 2016, 03:11