2013-04-22 25 views
11

Czy jest jakiś sposób, aby dowiedzieć się, czy skrypt php jest dostępny bezpośrednio lub jest dołączony.Jak znaleźć plik php jest dostępny lub dostępny bezpośrednio?

  1. Załóżmy, że nie mamy miejsca, w którym się znajduje, więc ustawienie zmiennej sesji nie rozwiąże problemu. Nie mogę sprawdzić, gdzie to jest włączone. może być więcej niż 20 miejsc!
  2. Powinien zostać wykryty w skrypcie php. (Za pomocą funkcji PHP i zmiennych)
+1

możliwe duplikat http://stackoverflow.com/questions/2397004/php-check-if-a-file-is-loaded-directly-instead-of-including –

+3

[wymienić swoje zawiera] (http : //php.net/manual/en/function.get-included-files.php) i [Zapobiegaj bezpośredniemu dostępowi] (http://stackoverflow.com/questions/409496/prevent-direct-access-toa-a- php-include-file) –

+0

nie jest to duplikat, zobacz punkt 1 mojego pytania, nie mogę sprawdzić, gdzie jest dołączony. może być więcej niż 20 miejsc! – HPM

Odpowiedz

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

wykorzystywane ceejayoz odpowiedź, ale mam problemy podczas korzystania dowiązane pliki i ścieżki z powodu __FILE__ są automatycznie rozwiązane do rzeczywistej ścieżki. Dlatego użyłem funkcji realpath() na $_SERVER['SCRIPT_FILENAME'] zamiast tego, aby rozwiązać obie ścieżki do prawdziwej ścieżki, aby rozwiązać problem.

if(__FILE__ != realpath($_SERVER['SCRIPT_FILENAME'])) { 
    // we're in an include 
} 
Powiązane problemy