2012-08-06 207 views
-4

我有以下內容的PHP文件:PHP服務器端包含

<?php 
$myflash = $_GET["flashname"]; 
$mytitl = $_GET["titlname"]; 
$myqgif = $_GET["flashgif"]; 
$mytxt = $_GET["txtname"]; 
?> 

<?php 
include('01.txt'); 
?> 

它顯示正常。但是,當我使用以下內容:

<?php 
include('<?php echo $mytxt; ?>.txt'); 
?> 

它不顯示。

+0

可以肯定的是,'?php'這行代表的是<?php',對吧? – Matt 2012-08-06 18:56:19

回答

3
?php 
include('<?php echo $mytxt; ?>.txt'); 
?> 

無效PHP語法... <?php ?>裏面的代碼已經是PHP代碼。你不會放更多的PHP標籤。

你只想使用:

<?php 
    include($mytxt . '.txt'); 
?> 

您有PHP代碼的PHP代碼,然後將一個包含語句。在該聲明中,您將兩個字符串($mytxt.txt)連接起來形成一個文件名以包含。

請確保在包含它之前清理您的輸入。有人可以很容易地更改GET參數,並且您的腳本將會使用include任何他們想要的文件。確保文件在包含之前就是你想要的位置。

2

你不能在一個字符串中做回聲。相反,你要尋找的字符串連接:

include($mytxt . '.txt'); 

需要注意的是,你將不得不消毒$mytxt避免Local File Inclusion(LFI)漏洞。

0
<?php 
include('<?php echo $mytxt; ?>.txt'); 
?> 

已經是PHP了。你不需要重新打開你的php標籤。

<?php 
include($mytxt . ".txt"); 
?> 
0

監守的include功能走的是參數爲和路徑,而不是PHP代碼它不diplay什麼。

如果您將echo $mytxt;納入foobar.php並且說include('foobar.php');它會起作用。但它目前的形式毫無意義。

01.txt因爲它(01.txt是一個文件)的內容被加載到代碼被顯示。主要是因爲它不是PHP代碼,它將被轉儲到瀏覽器。包含應該用於讓我們的代碼中執行其他PHP腳本。