2012-07-20 22 views
1

當我使用它的完整URL(如include 'http://mysite.tld/mypage.php')包含頁面時,我不能使用中的$GLOBALS,它返回Undefined index錯誤。

但是,當我把它給使用它的相對路徑(如include 'mypage.php'),那麼它的確定。

之所以我使用的URL,而不是相對路徑是,我想包括$_GET參數mypage.php

是否有這種奇怪的行爲,任何合理的解釋?


請注意,這兩個文件位於同一個目錄中的同一臺服務器上。

+0

我假定你的意思'$ _GLOBALS',不'$ GLOBALS' ... – 2012-07-20 01:47:24

+0

@JasonMcCreary號我的意思是[$ GLOBALS](http://php.net/manual/en/reserved.variables.globals。 PHP)。 '$ GLOBALS'是美元符號後並沒有強調只有[超全局(http://www.php.net/manual/en/language.variables.superglobals.php)變量。 – Pixel 2012-07-20 01:48:16

+1

我站好了。顯示我是多麼使用它...從來沒有 - 不好的形式和或暗示的:) – 2012-07-20 01:51:58

回答

1

包括與URL文件意味着代碼運行作爲一個單獨的過程,這意味着它以不同的可變範圍內運行。這與通過相對路徑包含文件相反,在這種情況下,它非常相當於將代碼剪切並粘貼到腳本中。

從本質上講,這意味着只能從您的出發腳本變量是那些你明確地傳遞(如你在這種情況下使用$_GET變量)。這包括$_SESSION變量,因爲調用者是您自己的服務器而不是客戶端。

此行爲在PHP手冊的include頁指出:

如果目標服務器解釋的目標文件作爲PHP代碼, 可以使用URL請求字符串傳遞給所包含的文件所用 變量與HTTP GET。這不是嚴格意義上講同樣的事情 包括文件並繼承父文件的變量 範圍;該腳本實際上正在遠程服務器上運行,並且 結果將被包含到本地腳本中。