2013-04-22 6 views
11

C'è un modo per scoprire se uno script php è accessibile direttamente o è incluso.Come scoprire che un file php è incluso o accessibile direttamente?

  1. Supponiamo di non sapere dove è incluso, quindi impostare la variabile di sessione non risolverà il problema. Non riesco a controllare dove è incluso. potrebbe essere più di 20 posti!
  2. Dovrebbe essere rilevato nello script php. (Tramite funzioni PHP e variabili)
+1

possibile duplicato di http://stackoverflow.com/questions/2397004/php-check-if-a-file-is-loaded-directly-instead-of-including –

+3

[Inserisci il tuo include] (http : //php.net/manual/en/function.get-included-files.php) e [Impedisci l'accesso diretto] (http://stackoverflow.com/questions/409496/prevent-direct-access-to-a- php-include-file) –

+0

no non è duplicato, vedere il punto 1 della mia domanda, non posso controllare dove è incluso. potrebbe essere più di 20 posti! – HPM

risposta

15
if(__FILE__ != $_SERVER['SCRIPT_FILENAME']) { 
    // we're in an include 
} 
3

risposta di ceejayoz utilizzato, ma non ho problemi quando si utilizzano file collegato simbolicamente e percorsi a causa di __FILE__ dall'essere risolta al percorso vero automaticamente. Quindi ho usato la funzione realpath() su $_SERVER['SCRIPT_FILENAME'] per risolvere entrambi i percorsi sul percorso reale per risolvere il problema.

if(__FILE__ != realpath($_SERVER['SCRIPT_FILENAME'])) { 
    // we're in an include 
} 
Problemi correlati