如何从另一个PHP文件加载PHP文件(并执行脚本)中的内容?

时间:2011-03-16 17:07:47

标签: php scripting content-management-system echo

我有一个PHP脚本(index.php),它根据URL的查询部分更改显示的页面(使用GET)。页面中的所有链接都使用?page=pageName访问不同的“页面”,index.php脚本相应地从文本文件中加载HTML(将其回显到屏幕上)。

因此,如果用户转到index.php?page=about,我的PHP脚本会加载一个名为about.php的文件,并在浏览器的视图容器中回显它。

但是,我遇到了一个大问题:我正在加载的内容中包含PHP脚本,但在使用index.php脚本回显时,这些脚本不会被执行。这使得我无法加载包含从MySQL数据库中提取的目录列表的页面。

基本上,我想知道是否有任何方法可以将PHP文件回显到页面上,但也可以在文件中执行PHP代码。

为清楚起见,我附上了一个带注释的截图,描述了我的意思:

编辑:以下是链接:

enter image description here

3 个答案:

答案 0 :(得分:2)

在index.php中使用if语句包含('about.php'),并将echo语句放在about.php中。如果这不起作用,请发布代码示例。

if( $_REQUEST['someQuery'] == 'about' )
{
     include('about.php');
}

答案 1 :(得分:1)

使用include()将包含另一个PHP脚本的内容并执行它。如果其他PHP脚本包含产生输出的函数,那么您将需要单独调用它们。

答案 2 :(得分:0)

请不要用连词开始你的句子。

  

根据网址更改显示的页面

大多数网页都不会发生这种情况吗?

  

使用?page = pageName

访问不同的“页面”

哦 - 你的意思是URL的查询部分 - 前端控制器模式 - 好吧!

  

我可以将PHP文件回显到页面上,但也可以在文件中执行PHP代码。

您是否想要查看PHP源代码代码的输出?或者只是代码的输出?

在您的前端控制器中:

<?php
    if (realpath($_REQUEST['page'])!=$_REQUEST['page']) {
        header("HTTP/1.1 500 Internal Server Error");
        die ("Naughty!");
    }
    $script=SOME_PATH . $_REQUEST['page'] . ".php";

    if (!file_exists($script) || !is_readable($script)) {
         header("HTTP/1.0 404 Not Found");
         die ("File not found");
    }
    print "src = <br />";
    highlight_file($script);
    print "<hr />Output:<br />";
    include($script);