包含文件时传递字符串的最佳方法

时间:2019-05-30 17:48:17

标签: php session

在使用include()函数时传递字符串时遇到麻烦。我有index.php,它用作模板文件,并且包含任何其他页面。

例如,如果要转到主页,则地址为http://somethingsomething.com/index.php?page=home,包含的文件为pages / home.php。在下面,您可以找到模板系统的工作方式。我想更改您当前所在的页面,但我不知道从页面标题传递该字符串的最佳方法是什么。因此,如果我在目录页面-http://somethingsomething.com/index.php?page=catalogue上,它将包含文件pages / catalogue.php,并且我尝试将字符串作为SESSION传递,但没有成功。请你帮助我好吗?

源URL:http://somethingsomething.com/index.php?page=catalogue

index.php文件

<html>
    <head>
        <title><?php echo $title; ?></title>
    </head>
    <body>
        <h1>Welcome, world!</h1>
    <?php
        if (isset($_GET['page'])) {
            $page = $_GET['page'];
        } else {
            $page = 'home';
        }

        if (preg_match('/^[a-z0-9]+$/', $page)) {
            $insert = include('pages/' . $page . '.php');
            if (!$insert) {
                $insert = include('pages/error.php');
            }
        } else if (empty($page)) {
            $insert = include('pages/error.php');
        } else {
            $insert = include('pages/error.php');
        }
    ?>
    </body>
</html>

pages / catalogue.php文件

    <?php
        $title = "Catalogue";
    ?>

1 个答案:

答案 0 :(得分:1)

像这样吗?

<?php
    ob_start();
        if (isset($_GET['page'])) {
            $page = $_GET['page'];
        } else {
            $page = 'home';
        }

        if (preg_match('/^[a-z0-9]+$/', $page)) {
            $insert = include('pages/' . $page . '.php');
            if (!$insert) {
                $insert = include('pages/error.php');
            }
        } else if (empty($page)) {
            $insert = include('pages/error.php');
        } else {
            $insert = include('pages/error.php');
        }
    $output = ob_get_clean();
?>
<html>
    <head>
        <title><?php echo $title; ?></title>
    </head>
    <body>
        <h1>Welcome, world!</h1>
    <?php
        echo $output;
    ?>
    </body>
</html>