2010-05-31 85 views
3

所以,好的。我有很多PHP文件和一個index.php文件。如果沒有index.php文件,所有文件都無法運行,因爲我將它們包含在index.php中。例如。如果有人點擊Contact us,該網址將變得像index.php?id=contact那樣不起作用,並且我使用$_GET['id']來包含contacts.php文件。但是,如果有人找到文件的路徑,例如/system/files/contacts.php我不希望那個文件被執行。所以,我發現我可以在包含index.php這樣的任何文件之前添加這樣的文件,如$check_hacker = 1,並且在每個文件中使用if,像這樣開始的if($check_hacker <> 1) die();。那麼,如何在不打開所有文件的情況下將其添加到每個文件中?可能嗎?因爲我實際上有很多.php文件。也許還有其他的方式來禁用看單獨的文件?有任何想法嗎?
謝謝。如何在所有php文件的開頭添加一行?

回答

10

你可以把你的index.php放在你的web目錄中。並將其包含的所有文件放入另一個非web目錄中。

假設你的網站http://www.example.com/index.php實際上是/path/to/your/home/www/index.php,你可以把contact.php放在/path/to/your/home/includes/contact.php。沒有.htaccess,重寫,自動附加。只需要一個好的文件結構和一臺配置好的服務器。

編輯細節,我對使用XAMP評論:

在httpd.conf文件,添加如下內容:

<Directory "/path/to/your/site/root"> 
    Options Indexes FollowSymLinks 
    AllowOverride all 
    Order Deny,Allow 
    Deny from all 
    Allow from 127.0.0.1 
</Directory> 


<VirtualHost *:80> 
    DocumentRoot /path/to/your/site/root 
    ServerName www.example.org 
</VirtualHost> 

然後在您的Windows主機文件(在C:\ Windows \ System32下\ drivers \ etc下),加入這一行:

127.0.0.1 www.example.com 
+0

我一直這樣做,但在我的xampp localhost中是不夠的。 – 2010-06-03 16:04:00

+0

不要告訴我你用xamp來託管你的網站。 無論如何,你可以改變你的apache配置來映射新的目錄作爲web訪問。然後在主機文件中添加一行,然後設置。 – Arkh 2010-06-03 17:58:36

+0

當然,我僅使用xampp進行測試。好的,謝謝,夥計。 – 2010-06-03 18:40:38

4

我想在這種情況下使用mod_rewrite(如果你使用Apache)。它比在PHP中寫入無用的if s更加乾淨。

這樣,如果有人想「破解它」並嘗試/system/files/contacts.php,它會將它們重定向到index.php?id=contact或任何其他網站。

9

我強烈建議使用.htaccess文件拒絕文件不同的所有請求index.php,但我不太清楚如何做到這一點。

這可能會實現(現在不能測試),但它也將阻止請求CSS,JS等:

order deny,allow 
<FilesMatch "\.php"> 
    deny from all 
</FilesMatch> 
<FilesMatch "(index.php)"> 
    allow from all 
</FilesMatch> 

如果有人知道正確的解決方案,請編輯我的答案。 您可能會檢查此問題:Deny direct access to all .php files except index.php

因此,除了index.php規則之外,您可能只有一個用於php文件的FilesMatch。

編輯:新版本的代碼似乎工作。

1
RewriteCond %{REQUEST_URI} system.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

將重定向到系統文件夾的任何嘗試回到根!

5

針對蛟川男孩:在新目錄中

將所有PHP文件(除的index.php),並把.htaccess文件,其內容如下:

deny from all 

製作確保你不要在這個目錄中放置任何images/css/jscript資源,因爲它們也會被阻止。

+0

這也是一個好主意,以避免與阻止圖像,CSS和JS的問題! – 2ndkauboy 2010-05-31 15:03:39

3

在php.ini或在你的htaccess設置以下變量:

auto_prepend_file="[path to some .php file]" 

這將包括一個您選擇的頭文件,它將包含在系統上的所有php腳本之前。

php.ini指令auto_append_file將創建一個包含在系統上所有PHP文件末尾的頁腳。

+0

這很酷。但它也會將它預備到index.php,因此所有文件都會在執行時被阻止。所以他必須在已插入文件的插入文件中檢查。 – 2ndkauboy 2010-06-02 15:13:46

相關問題