• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

echo $_SERVER['PHP_SELF']; ou __FILE__

12 mensagens neste tópico

qual é que voces usam?

n estou a ver qual é a cena do $_SERVER['PHP_SELF']; devolver a path desde a raíz... assim basicamente nada pratico...

o __FILE__ desenrasca sempre em qq situaçao certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu uso sempre o $SERVER['PHP_SELF']; por uma questão de opção. Na realidade, nunca tinha utilizado o __FILE__ até porque no livro que tenho nada falou sobre o mesmo.

Procurei pela distinção das variaveis e encontrei isto:

'PHP_SELF'

    O nome do arquivo do script atualmente em uso, relativo ao document root. Por exemplo, $_SERVER['PHP_SELF'] em um script com o endereço http://example.com/test.php/foo.bar pode ser /test.php/foo.bar. A constante __FILE__ contém o caminho completo e nome do arquivo (mesmo incluído) atual.

    Se estiver rodando o PHP em linha de comando, esta variável não está disponível.

__FILE__

O caminho completo e nome do arquivo. Se utilizado dentro de um include, o nome do arquivo incluído será retornado.

http://pt.php.net/manual/pt_BR/reserved.variables.php#reserved.variables.server

http://pt.php.net/manual/pt_BR/language.constants.predefined.php

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu sempre usei o $_SERVER["PHP_SELF"]; desde o php3 acho :P

O __FILE__ nunca tinha ouvido falar sequer :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

loooll

ya... era o que eu pensava... eu tinha lido essas paginas do manual e pus-me a mim próprio essa questao?

por que raio é to só vejo o $_SERVER["PHP_SELF"] se o __FILE__ é muito mais prático... aparentemente estou a ver queé por causa de ter aparecido em alguma literatura muito popular.

Eu já usei um livro de php mas já me dexei disso... na internet arranja-semelhor documentação... nomeadamente o manual :P que esta sempre actualizado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O post do deathseeker25 está correcto, mas pelas respostas parece que está pouco explícito.

Se tiveres um script php em que fazes include ou require de outro ficheiro, tipo isto:

(ficheiro: index.php)

...

<?php
require 'teste.php';
?>

...

e nesse outro ficheiro usares o __FILE__

(ficheiro: teste.php)

<?php
echo __FILE__."<br>";
echo $_SERVER["PHP_SELF"];
?>

vais ver que o __FILE__ retorna /home/user/public_html/caminho/para/teste.php (num sistema *nix) e o $_SERVER["PHP_SELF"] retorna /caminho/para/index.php (com o caminho desde a directoria-base do servidor). A diferença é que o __FILE__ dá o nome do ficheiro que está a ser processado, e o $_SERVER["PHP_SELF"] dá o nome do ficheiro que foi pedido pelo browser.

A razão para existirem os dois (e existe sempre uma razão) é que, quando alteramos ficheiros, dá jeito ter o path completo da máquina; quando estamos a lidar com endereços web, dá mais jeito ter o path a partir da directoria-base do servidor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

moral da história: falta um terceiro que dê a path completa para o script em execução em vez do script incluido.

epa... é um pouco fatela... estilo: o $_SERVER["PHP_SELF"]...

se eu escrever:


string $destino=$_SERVER["PHP_SELF"]."?var1=2";
header($destino);

esta porra redireciona-me para o próprio ficheiro independentemente da directoria onde este esteja?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, se tiveres isso quer dentro de um ficheiro que foi required por um index.php, quer dentro do proprio index.php, isso redirecciona-te para o index.php.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

PHP foi buscar várias 'features' a outras linguagens de programação ex: c e perl

perl comentário #

c comentários // ou /* */

(entre outros)

isso do __FILE__ existe em C é normal que PHP também exista

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

yaps... eu já sou um mano que desabrochou para  programação web já na era do php... mas pelo que parece, o parente mais velho é mesmo o perl...

pelo que vejo, os programadores de php que já andam nesta vida há mais tempo vieram todos do perl... de resto já estive a ler umas cenas sobre perl e não parece muito diferente... mas agora estamos na era do php.. o perl teve o seu tempo...

anyway... acerca do $_SERVER["PHP_SELF"] a minha pergunta era... se eu estou por exemplo na pasta

/pagina

se eu usar o $_SERVER["PHP_SELF"] não me irá isso apontar para /pagina/pagina/nomedoficheiro.php

causando assim um erro? é que esta porra diz que dá sempre o caminho completo...

anyway... acerca  do

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ele vai retornar "/pagina/nomedoficheiro.php"; como tem a / no inicio, o browser interpreta isso como o caminho completo, não lhe adicionando a directoria actual.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tal como eu pensava...

podia-me ter dado ao trabalho de experimentar... ehehe lol

obrigado dark

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende muito daquilo que queres.

__FILE__ dá-te o caminho completo para o ficheiro que está a chamar a constante.

Se tiveres um __FILE__ dentro de um header.php incluido pelo index.php, o __FILE__ devolve-te o caminho do header.php

É bom para quando vais ler ficheiros de config, por ex, e não sabes a path completa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora