2012-12-12 80 views
4

我有一個PHP腳本,我想它,以便它只會顯示,如果你在你的瀏覽器中查看該頁面的某些文字,它不是由另一個腳本包含..只有顯示不包括?

例如

//foo.php 
<?php 
    if(!included){ 
     echo "You can only see this if this is the page you're viewing"; 
    } 
?> 

//bar.php 
<?php 
    include 'foo.php'; 
?> 

現在,當你查看「bar.php」時,你不應該看到文本..但是,如果你打開foo.php,你會..我怎麼做這個..?如果可能的話..

回答

7

不可能本身,但如果你是一個網站上揭露的PHP網頁,例如: example.com/bar.php,你可以,如果你使用的是Apache檢查$_SERVER['SCRIPT_FILENAME']

if (basename(__FILE__) != basename($_SERVER['SCRIPT_FILENAME'])) { 
    //this is included 
} 
+0

這完美的作品:)謝謝:) –

+2

@ thefiscster510如果它的工作完美,考慮接受答案。 – honyovk

1

在bar.php:

<?php 
    $included = true; 
    include 'foo.php'; 
?> 

在foo.php:

if(!isset($included)){ 
     echo "You can only see this if this is the page you're viewing"; 
} 
+0

我希望它使人們可以只使用包括「foo.php」。這是一類,我不希望他們不得不使用更多的代碼比他們太..我想大部分的代碼在班上。 –

1

「我希望它使人們可以只使用包括‘foo.php’。這是一類,我不希望他們不得不使用更多的代碼比他們太..我想的大部分代碼都在課堂上。「

,因爲你需要這個,我會建議你class_exists功能。http://php.net/manual/en/function.class-exists.php

這樣你可以檢查你的類是否被定義,不需要檢查是否包含文件。因爲,如果它被定義,它的文件是肯定包含的。

0

它總是一種好習慣使用include_once()的或require_once()函數。這樣你可以確保文件只包含一次。

定義頁面恆定要包括:

if(defined("ALREADY_LOADED")) { 
    echo "this page was loaded already"; 
    die("ciao"); 
} 
    else { 
    define("ALREADY_LOADED", 1); 
} 

現在,只要您需要這種控制,只需將文件加載之前定義:

define("ALREADY_LOADED", 1);