2011-06-15 31 views
2

我有我寫,我賣給別人誰想要在Facebook的虛擬禮物應用程序的腳本。正如許多誰買這個腳本實際上沒有編程知識的客戶,我儘量簡化事物儘可能有可能爲他們通過收集儘可能多的數據,我可以不用自己輸入(如使用$_SERVER瓦爾)。找到特定目錄名稱的有效方法?

我遇到一個問題時,試圖建立圖像的靜態目錄,雖然,代碼可以讀取和永遠知道該目錄。

例如,其上包括大部分在每一頁上我的「masterfile.php」我有這樣的:

$app_info['server_url']="http://".$_SERVER['SERVER_NAME']; 
$app_info['callback_url']=$app_info['server_url'].dirname($_SERVER['PHP_SELF'])."/"; 
$app_info['image_url']=$app_info['callback_url'].'images/'; 

這給了我一切,我需要在哪裏文件夾所在的必要信息,除非...我在整個腳本的父目錄中使用一個目錄(IE:/ folder/ajax /)。

我遇到了一個問題,其中'圖像'文件夾需要始終爲'/文件夾/圖像/',而不是結束爲'/文件夾/ ajax /圖像/ 。

我不能僅僅因爲某些客戶將它們上傳到「/ folder/folder/folder/folder/script /」等目錄而對其父目錄名進行硬編碼 - 這就是爲什麼我使用$_SERVER['PHP_SELF']來建立父目錄的原因。

有沒有一種方法(或變量),我可以使用這個問題?我只需要確保$app_info['callback_url']總是相同的,不管當前目錄如何。

謝謝!

回答

0

那是多少個文件夾用戶有這麼多../將被包含在圖像的路徑中。

$dir = scandir('/testdir'); 
$dots = '/'; 

for($i = 0;$i < sizeof($dir)-2;$i++) // -2 not to count . and .. as folders 
{ 
    $dots .= '../'; 
} 

$app_info['server_url'] = "http://" . $_SERVER['SERVER_NAME']; 
$app_info['callback_url'] = $app_info['server_url'] . dirname($_SERVER['PHP_SELF']) . "/"; 
$app_info['image_url'] = $app_info['callback_url'] . "{$dots}images/"; 
+0

不幸的是,圖像文件夾在父目錄中,而不僅僅在服務器上。我知道你在想什麼,但是當你賣給顧客時,你必須考慮到他們可能有自己的文件夾,他們不想調整。 – Phillip 2011-06-15 05:53:36

+0

由於文件夾沒有限制,您可以製作很多文件夾/路徑/到/文件夾/一個/您可以使用/../../../../images/。 示例:$ app_info ['image_url'] = $ app_info ['server_url']。 '/../../../../圖片/'; – 2011-06-15 05:58:41

+0

那麼問題是我不知道圖像目錄和服務器之間有多少個文件夾。它會因客戶而異。 – Phillip 2011-06-15 05:59:51

3

我會定義一個基本目錄常量在您的應用程序的引導類型文件中。

define('BASE_DIR', basedir(__FILE__)); 

(如果你能保證> = PHP 5.3,你可以用__DIR__。)

然後簡單地包括在此基礎上不斷的文件...

include BASE_DIR . '/something.php'; 
+0

我以前(的東西使用免費的主機在其他國家,特別是非洲或歐洲客戶做居多)曾與該問題。我可以通過父目錄中的處理文件路由所有的AJAX調用,這樣我總能訪問正確的目錄。 – Phillip 2011-06-15 05:56:11

相關問題