2016-06-21 116 views
1

我希望目錄中的所有PHP頁面只在PHP變量存在且有效時才加載。我知道如何在單個或多個頁面上手動執行此操作,但我希望這會自動發生在目錄中的所有頁面上。是否有某種類型的設置可以放在php.ini文件中,以便我可以執行此操作。PHP在加載頁面之前檢查全局變量

+0

這是一個優勢框架。在一個框架中,如果不加載你的*基文件集*,你永遠不會加載其他文件。我建議,如果你不使用它,至少在這方面模仿他們。讓你的php文件全部包含一個文件。在該文件中,確保所有必須在其他事情發生之前發生的邏輯。這也很棒,因爲您可以確保您的標題永遠不會發送到多個地方。 –

+0

沒有辦法只爲一個目錄執行此操作。有一個全局'auto_prepend_file'選項,但它適用於所有目錄中的所有腳本。 – Barmar

+0

我想限制訪問的目錄充滿了來自第三方的文件。我無法控制他們是否使用框架。我同意你的評論100%,但如果這對我來說很簡單。我需要儘可能避免觸摸代碼。 –

回答

0

只需向每個頁面添加一條if語句,檢查是否設置了會話變量。爲什麼編輯ini文件?

+0

我想阻止整個目錄的訪問。有成千上萬的文件,添加if語句來檢查每個文件中的變量是不切實際的。 –

+0

@MitchMitchell如果這些文件都不應該被直接訪問(瀏覽器,另一個腳本 - ajax等),那麼你可以考慮添加一個.htaccess(或者如果你不使用apache的話也可以使用類似的方法)? –

+0

@OliverMaksimovic他們應該被訪問,但只有當一個全局變量具有正確的值。我不想完全切斷訪問 –

0

你可以使用htaccess。使用下面的代碼在您要保護的目錄中創建一個htaccess文件。

.htaccess文件

php_value的auto_prepend_file 「/path/globalchecker.php」

globalchecker.php

<?php 
if($some_global_value !== 'some value') 
    exit; 

?> 
+0

@Mitch Mitchell做了這項工作嗎? – bassxzero