我的網站的主文件(的index.php)的代碼是在這裏:如何防止用戶看到「包含文件」?
<?php
include 'header.php';
include 'sidebar.php';
include 'content.php';
include 'footer.php';
?>
但我不希望任何用戶看到這些文件包括寫「www.domain.com/header.php」。我應該在這些文件中插入一個php代碼還是可能的?
我的網站的主文件(的index.php)的代碼是在這裏:如何防止用戶看到「包含文件」?
<?php
include 'header.php';
include 'sidebar.php';
include 'content.php';
include 'footer.php';
?>
但我不希望任何用戶看到這些文件包括寫「www.domain.com/header.php」。我應該在這些文件中插入一個php代碼還是可能的?
您可以在主文件中定義一個常量,並用它在你的包含文件DETEC它們是否真的包括或不包括:
的index.php
<?php
define('REALLY_INCLUDED', true);
include'header.php';
的header.php
<?php
if(!defined('REALLY_INCLUDED') || !REALLY_INCLUDED) {
exit();
}
...
您有幾種選擇。
exit
。+1,用於將所有這些文件從webroot中移出。 – Arkh
這裏有一個PHP給你。
if(basename(__FILE__) == basename($_SERVER['PHP_SELF'])){exit();}
總之,如果調用文件本身就退出執行。
消息來源:http://thephpcode.blogspot.se/2009/07/creating-include-only-php-files.html
不錯的工作,男人。在我看來,這是一個完美的答案。有時,將變量或常量應用於包含的文件是不可能的(也許很難),因爲它們是通過AJAX調用的 –
...然後你忘記常量在某處並暴露該文件。 「哎呀呀」。如果你想要一些保密的東西,不要把它放在文檔的根目錄中。 –
這會引發一些不必要的警告。在定義期間添加引號:'define('REALLY_INCLUDED',true);'並使用正確的函數來檢查常量是否被定義:'if(!defined('REALLY_INCLUDED')||!REALLY_INCLUDED){...' –
如果在另一個包含文件中調用了包含文件,該怎麼辦?第一個被Javascript調用?第一個不能定義這個常量,並檢查這個常量是否已經同時被設置。它不會工作。我建議@AndreasEriksson的回答爲 –