2012-08-06 209 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脚本。