-4

我有一个包含以下内容的 PHP 文件:

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

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

它正确显示。但是当我使用以下内容时:

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

它不显示。

4

4 回答 4

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

不是有效的 PHP 语法...里面<?php ?>的代码已经是 PHP 代码。你不要在里面放更多的 php 标签。

您只想使用:

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

你有 PHP 代码的 php 标签,然后是一个包含语句。在该语句中,您连接两个字符串 ($mytxt.txt) 以形成要包含的文件名。

请确保在包含之前清理您的输入。有人可以轻松更改 GET 参数,而您的脚本将include更改他们想要的任何文件。在包含之前,请确保该文件位于您想要的位置。

于 2012-08-06T18:56:43.363 回答
2

你不能在字符串中做回声。相反,您正在寻找字符串连接:

include( $mytxt . '.txt');

请注意,您必须进行清理$mytxt以避免本地文件包含(LFI) 漏洞。

于 2012-08-06T18:56:21.370 回答
0
<?php
include('<?php echo $mytxt; ?>.txt');
?>

已经是PHP了。你不需要重新打开你的 php 标签。

<?php
include($mytxt . ".txt");
?>
于 2012-08-06T18:57:18.363 回答
0

它不显示任何内容,因为该include函数将参数作为文件名和路径,而不是 PHP 代码。

如果你投入echo $mytxt;foobar.php说它include('foobar.php');会起作用。但它以目前的形式毫无意义。

01.txt正在显示,因为它的内容(是01.txt一个文件)已加载到代码中。主要是因为它不是 PHP 代码,所以会被转储到浏览器中。Include 应该用于在我们的代码中执行其他 PHP 脚本。

于 2012-08-06T18:57:21.610 回答