Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) includes dentro de includes...


Marcos Beraldo

Pergunta

E ai pessoal. Vamos ver se consigo explicar minha dúvida.

No meu sistema de login tem um arquivo chado validar_session.php. Todas as paginas com acesso restrito levam uma include com esse arquivo. Até ai tudo bem.

imaginem que esse arquivo fique no diretório raiz. Quando eu chamo esse arquivo em outro diretório tipo o include fica assim include "../validar_session.php";

Até ai tudo bem, a questão é que quando eu chamo esse arquivo em outro diretório, as includes que ficam dentro do arquivo validar_session.php não são carregadas, porque teoricamente o diretório delas tb mudou quando chamei o validar_session.php dentro de outras pasta.

A questão é: como faço para chamar um arquivo por include sem que as includes dentro dele se percam???

Obrigado!

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
Não se utiliza include dentro de include.

Isso é gambiarra :)

Meu amigo:

1. Ou você é completamente LOUCO ou

2. Você NUNCA desenvolveu uma aplicação maior que dois ou três arquivos ou

3. EU preciso URGENTEMENTE voltar para a faculdade.

Lamento pelo tom, moderação, mas acho que a resposta do Marcus Nunes ẽ completamente ridícula e posso enumerar uma centena de ocasiões onde incluir um arquivo e esse arquivo incluir outros arquivos que também incluem outros arquivos É NATURAL e muitas vezes reflete UMA BOA PRÁTICA DE PROGRAMAÇÃO.

No meu sistema de login tem um arquivo chado validar_session.php. Todas as paginas com acesso restrito levam uma include com esse arquivo. Até ai tudo bem.

imaginem que esse arquivo fique no diretório raiz. Quando eu chamo esse arquivo em outro diretório tipo o include fica assim include "../validar_session.php";

Até ai tudo bem, a questão é que quando eu chamo esse arquivo em outro diretório, as includes que ficam dentro do arquivo validar_session.php não são carregadas, porque teoricamente o diretório delas tb mudou quando chamei o validar_session.php dentro de outras pasta.

A questão é: como faço para chamar um arquivo por include sem que as includes dentro dele se percam???

Bom Beraldo, existem várias formas de se fazer isso, algumas mais elegantes e outras mais fáceis e práticas, vou passar como exemplo uma mais prática e mais simples de implementar, porém você terá sempre que tomar cuidado com o uso pois você pode correr um risco de segurança se esse método for utilizado de forma errada:

No seu arquivo validar_session.php (que está na raiz):

include_once( sprintf( "%sseu_arquivo.php" , $_SERVER[ "DOCUMENT_ROOT" ] ) );
O código poderá não funcionar se você estiver desenvolvendo em um ambiente onde você tem um "localhost" e nesse servidor você tem várias pastas, uma para cada projeto. Nesse caso você pode utilizar uma verificação antes do include:
if ( $_SERVER[ "SERVER_NAME"] == "localhost" ){
    $nome_da_pasta_do_seu_projeto = "projeto";
    include_once( sprintf( "%s%s/seu_arquivo.php" , $_SERVER[ "DOCUMENT_ROOT" ] , $nome_da_pasta_do_seu_projeto ) );
} else {
    include_once( sprintf( "%sseu_arquivo.php" , $_SERVER[ "DOCUMENT_ROOT" ] ) );
}

Abraços Beraldo.

PS: Marcus Nunes para garantir seu direito a réplica sem prejudicar o andamento do fórum, você pode escrever diretamente para o meu email: neto.joaobatista@gmail.com

[]'s

J. Neto

Link para o comentário
Compartilhar em outros sites

  • 0
3. EU preciso URGENTEMENTE voltar para a faculdade.

Eu voto nessa.

Brincadeiras à parte, tudo depende do caso, chamar includes dentro de includes à esmo é gambiarra, agora, se for baseando em alguma arquitetura como o MVC é outra 'estória', mas como boa parte dos profissionais do PHP são formados nas coxas...

Link para o comentário
Compartilhar em outros sites

  • 0

Ae pessoal, não quero ser chato, mas já sendo, essas funções foram feitas para serem usadas inclusive uma dentro das outras. Isso não é gambiarra, pelo contrário, evita que se fique fazendo gambiarras e utilizando o mesmo código várias vezes. Tanto é que inventaram 4 tipos de funções deste tipo:

include

include_onde

require

require_once

Se vocês estudarem esta função verão que o uso delas divergem conforme se utiliza uma dentro da outra.

Obrigado neto.joaobatista, era isso mesmo que eu precisava, já tinha visto isso em outro lugar, mas não me lembrava de jeito nenhum.

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
Ae pessoal, não quero ser chato, mas já sendo, essas funções foram feitas para serem usadas inclusive uma dentro das outras. Isso não é gambiarra, pelo contrário, evita que se fique fazendo gambiarras e utilizando o mesmo código várias vezes.

Me desculpe a sinceridade, mas esse pensamento é no mínimo inocente, isso é a mesma coisa que dizer que o ar está ai para ser respirado, é óbvio que se a função está ai é para ser usada, o modo como é usada é que vai determinar se é gambiarra ou não, se você fizer tudo apenas para não ficar "utilizando o mesmo código várias vezes" não significa que a sua idéia não vai cair em uma gambiarra, uma dica, estude padrões de desenvolvimento de software, isso vai te dar outros horizontes.

Link para o comentário
Compartilhar em outros sites

  • 0
Brincadeiras à parte, tudo depende do caso, chamar includes dentro de includes à esmo é gambiarra, agora, se for baseando em alguma arquitetura como o MVC é outra 'estória', mas como boa parte dos profissionais do PHP são formados nas coxas...

Será mesmo que é ?

Alguém aqui já leu algum código realmente grande ?

Gente, tenho uma classe A que utiliza uma classe B e C, a classe B utiliza uma classe D e E e a classe C uma classe F e G. Vocês estão me dizendo que eu devo incluir na classe A as classes:

D e E (que fazem parte da B )

F e G (que fazem parte da C )

Sem contar é claro as classes B, C (que fazem parte da própria classe A ).

Por que se for isso mesmo, então acho realmente que todo mundo enlouqueceu, hehehehe, fico imaginando um arquivo codificado assim, tipo.

1a linha: include...

2a linha : include...

...

576a linha: include...

<?

Aplicacao::getObj()->mostra_nome(); //Detalhe que a classe Aplicacao foi definida no include 3

?>

Uau, fico imaginando o quão elegante é um código assim...

Abraços a todos.

Editado por neto.joaobatista
Link para o comentário
Compartilhar em outros sites

  • 0
Será mesmo que é ?

Alguém aqui já leu algum código realmente grande ?

Como você veio me incomodar via PM vou jogar aqui a mesma resposta que te mandei pro lá:

Se você além de bom desenvolvedor fosse bom em interpretação de texto veria que eu não disse que você estava errado em ponto algum, disse que ficar dando include dentro de include à esmo (se não souber o que significa esmo pegue um dicionário) é gambiarra, agora se for baseado em alguma arquitetura (citei MVC pois é a meninca dos olhos de boa parte dos desenvolvedores hoje em dia), ai é outra 'estória', mesmo porque qualquer um que pegou um sistema médio/grande, já viu include dentro de include, qualquer um que já trabalhou com framework idem, ou seja, tudo é questão de interpretar o texto e não ficar ai provando que é o bom ou coisa do tipo, mesmo porque, pra mim não faz a menor diferença o que você diz ou acha, e acredito que você também pense a mesma coisa sobre a minha pessoa.

E só pra provar que os tais "includes dentro de includes" podem ou não ser uma bomba, tem dois sistemas distintos que demonstram isso:

Má aplicação da idéia: OSCommerce

Aplicação perfeita da idéia: WordPress

Vou esperar você dar sua resposta e encerrar o tópico, visto que já foi dada a solução e agora todo mundo só está a fim de exaltar o próprio ego.

Link para o comentário
Compartilhar em outros sites

  • 0
Vou esperar você dar sua resposta e encerrar o tópico, visto que já foi dada a solução e agora todo mundo só está a fim de exaltar o próprio ego.

Bom, não tinha visto sua resposta no fórum por isso enviei outra em PVT.

Mas lamento profundamente que esse fórum seja "moderado" dessa forma.

Por mim, pode considerar o tópico encerrado.

Abraços,

João Neto

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...