2011-06-27 65 views
1

我想基於從另一頁傳遞的變量包含不同的頭文件。該變量是$部分。這裏是我的代碼:可以在php中包含的文件的名稱中使用變量嗎?

<?php include("header".$section.".php"); ?> 

我想基於變量$部分包括headerAbout.php或headerMenu.php或者......。但我得到一個錯誤:

include(header.php) [function.include]: failed to open stream: No such file or directory 

我不知道爲什麼變量不被連接。有人可以澄清這一點?

+1

當你在'$ section'上做'var_dump'時會發生什麼? –

+0

只是把變量的回聲,天氣它得到價值或不? –

+0

對不起。我發現了這個錯誤。請參閱下面的評論。 – Brahadeesh

回答

2

鑑於它沒有連接在一起,變量沒有定義在你試圖在include中使用它的地方。你在哪裏設定它的價值?

+0

我發現了這個問題。我直接從firefox預覽它,並沒有給url變量賦予任何值。因此$ section的變量值沒有被設置。如果我給的價值在網址中,它的工作正常。 – Brahadeesh

1

是的,include language construct只是期望string作爲參數值。此字符串值可以來自字符串文字,variable/constant或返回字符串的任何其他表達式(例如函數/方法調用)。

您的錯誤的原因可能是$section不包含您所期望的值。

請注意,您應該知道,如果您允許用戶輸入爲文件位置的一部分,則可能容易受到path traversal attacks的影響。所以請確保驗證值。

+0

謝謝。請參閱我的評論。 – Brahadeesh

1

它工作正常。其可能$section在當前範圍或當前執行中不包含值。

+0

謝謝。請參閱我的評論。 – Brahadeesh

相關問題