2010-10-01 98 views
6

除了把它放在所有的PHP腳本之前,我如何在每個php腳本之前運行它?在每個php腳本之前執行php腳本?

if ($_SERVER['REMOTE_ADDR'] == '123.123.123.123') 
{ 
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP']; 
} 

我基本上想要把它放在每個腳本的頂部而沒有真正做到這一點。

+3

請注意''HTTP_X_REAL_IP'標頭可以很容易地被客戶僞造,但對於'REMOTE_ADDR'來說並不那麼容易。 – 2010-10-01 17:24:54

+1

您的應用程序沒有單一入口嗎? – halfdan 2010-10-01 17:32:42

+0

這就是爲什麼'如果'在那裏。它檢查的地址是我的代理服務器ip。 – Will 2010-10-01 17:40:06

回答

10

將它放在它自己的文件中,並在php.ini/.htaccess文件中將auto_prepend_file配置設置爲指向它。

更新:既然你在留言中提到lighttpd的,請注意,您可以在全局INI文件,PHP 5.3將其配置是這樣的:

[PATH=/vhost/domain.com] 
auto_prepend_file = /vhost/domain.com/foo.php 

[HOST=domain.com] 
auto_prepend_file = /vhost/domain.com/foo.php 

或者,您可以創建文件/vhost/domain.com/.user.ini,做同樣的:

auto_prepend_file = /vhost/domain.com/foo.php 
+0

相關:http://stackoverflow.com/questions/3792069/how-to-include-a-php-file-site-wide-using-htaccess-or-other-methods/3792076#3792076 – NullUserException 2010-10-01 17:20:26

+1

+1爲lighttpd示例。我試圖爲後代添加「lighthttpd」問題標題 – 2010-10-01 17:33:21

+0

爲此付出:D。也只是試了一下,它的作品非常漂亮。 – Will 2010-10-01 17:51:57

1

如果您有必要的權利,改變你的PHP配置,auto_prepend_file正是你要尋找的。

auto_prepend_file 指定在主文件之前自動分析的文件的名稱。包含文件就像使用require()函數調用一樣,因此使用include_path。

特殊值none禁用自動預先設置。

+0

謝謝,只是好奇會有一個更好的方式來做lighttpd只爲1虛擬主機? – Will 2010-10-01 17:20:59

+0

當通過CGI運行時,PHP 5.3支持每個目錄下的'.user.ini'文件。 – Matthew 2010-10-01 17:22:23

+0

@High我不太瞭解lighthttpd,但您可能可以在'.htaccess'文件中設置選項 – 2010-10-01 17:22:55