可能重複:
How to hinder PHP files to Global Access執行腳本,而不是讓用戶訪問它
對於一個項目我的工作,我需要( 「xxxx.php」);將我網站的某些部分加入我的網站。
例如,我有header.php,我的網站只是使用一個簡單的require(「header.php」)向全世界顯示。
現在,我該如何使它所以頁面包括header.php中的內容,但要因此用戶無法通過
http://mywebsite.com/header.php
可能重複:
How to hinder PHP files to Global Access執行腳本,而不是讓用戶訪問它
對於一個項目我的工作,我需要( 「xxxx.php」);將我網站的某些部分加入我的網站。
例如,我有header.php,我的網站只是使用一個簡單的require(「header.php」)向全世界顯示。
現在,我該如何使它所以頁面包括header.php中的內容,但要因此用戶無法通過
http://mywebsite.com/header.php
訪問它把文件某處的DocumentRoot的外網絡服務器。
有時,使用共享主機時,您的主機不會爲您提供DocumentRoot外部的目錄。如果是這種情況,你可以使用'.htaccess' - 我在我的答案中加入了一個例子。 – middus
設置網絡服務器,以便:
你有一個公共目錄,其中可訪問的文件駐留,說靜止媒體+的index.php等
有一個資源目錄,即在您的公共文件夾之外。
設置Web服務器從公共目錄服務
包括像這樣:
要求( 「../私人/ header.php文件」);
你可以在你的索引文件定義常量,然後在header.php
你會檢查所以這個常數存在。
// check if the header.php file is accessed directly
if (!define('MY_SECRET_CONSTANT')) {
exit();
}
你可以從答案看:有一個極大的方式來做到這一點,這裏的兩位非常簡單的人,不需要你改變你的目錄結構:
在index.php
以及包括其他文件header.php
:
define('INCLUDED', true);
require 'header.php';
在header.php
:
if(!defined('INCLUDED')){
die('Forbidden'); // or you could redirect to home ... whatever you want :)
}
或者,您可以通過.htaccess
禁止訪問。因此,你甚至不必碰您的代碼:
<Files header.php>
order allow,deny
deny from all
</Files>
如果包括都在一個目錄下,你可以簡單地拒絕訪問該目錄。
您可以使用htaccess來確保不會查看特殊文件。通過虛擬主機條目可以實現同樣的效果。
最好的實踐是創建一個/ web文件夾,它是應用程序的「根」,並存儲應該可訪問的所有內容。其他文件夾到其他任何地方,並被包含在腳本中,這些腳本被設計爲被用戶訪問。
你的結構看起來是這樣的:
/var/www/mySite/inc/header.php
/var/www/mySite/web/index.php (including ../inc/header.php)
/var/www/mySite/web/css/style.css
Apache的虛擬主機是這樣的:
<VirtualHost *:80>
ServerName www.mysite.com
# Basic stuff
DocumentRoot "/var/www/mySite/web"
DirectoryIndex index.php
<Directory "/var/www/mySite/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
現在INC文件夾無法通過您的域名作爲Web文件夾訪問是根源來自URL的所有人。另一方面,您的腳本當然可以低於此值,並且可以在任何地方包含腳本。
我更喜歡[這個答案](http://stackoverflow.com/a/6796718/451969)重複的問題。將文件從Web可訪問路徑中移出,或者使其所在的目錄需要進行身份驗證。 –
您應該指定您使用的是哪個Web服務器。多數人認爲阿帕奇,但情況可能並非如此。 –
我目前正在使用本地主機服務器(XAMPP),所以我實際上使用Apache。 – InVert