Jump to content

echo $_SERVER['PHP_SELF']; ou __FILE__


Recommended Posts

Posted

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

Posted

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 😛 que esta sempre actualizado.

Posted

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.

Desaparecido.

Posted

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?

Posted

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

Posted

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

  • 3 weeks later...
Posted

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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.