Лучший способ передать строку при включении файла - PullRequest
1 голос
/ 30 мая 2019

У меня проблемы с передачей строки при использовании функции 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 file

<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>

страниц / catalogue.php файл

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

1 Ответ

1 голос
/ 30 мая 2019

Как то так?

<?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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...