PHP服务器端包含
问题描述:
我有以下内容的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');
?>
它不显示。
答
?php
include('<?php echo $mytxt; ?>.txt');
?>
无效PHP语法... <?php ?>
里面的代码已经是PHP代码。你不会放更多的PHP标签。
你只想使用:
<?php
include($mytxt . '.txt');
?>
您有PHP代码的PHP代码,然后将一个包含语句。在该声明中,您将两个字符串($mytxt
和.txt
)连接起来形成一个文件名以包含。
请确保在包含它之前清理您的输入。有人可以很容易地更改GET参数,并且您的脚本将会使用include
任何他们想要的文件。确保文件在包含之前就是你想要的位置。
答
你不能在一个字符串中做回声。相反,你要寻找的字符串连接:
include($mytxt . '.txt');
需要注意的是,你将不得不消毒$mytxt
避免Local File Inclusion(LFI)漏洞。
答
<?php
include('<?php echo $mytxt; ?>.txt');
?>
已经是PHP了。你不需要重新打开你的php标签。
<?php
include($mytxt . ".txt");
?>
答
监守的include
功能走的是参数为名和路径,而不是PHP代码它不diplay什么。
如果您将echo $mytxt;
纳入foobar.php
并且说include('foobar.php');
它会起作用。但它目前的形式毫无意义。
的01.txt
因为它(01.txt
是一个文件)的内容被加载到代码被显示。主要是因为它不是PHP代码,它将被转储到浏览器。包含应该用于让我们的代码中执行其他PHP脚本。
可以肯定的是,'?php'这行代表的是 Matt 2012-08-06 18:56:19