Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Php распечатать содержимое файла с php-контентом

Автор вопроса: Richard AtterfalkОтветов: 1

После безуспешной проверки как fread, так и fopen с помощью поисковой команды "php fread php code" и php fopen php code, я теперь сам задаю вопрос. (Более 300 страниц с вопросами были немного крутыми, чтобы копать вокруг внутри.)

У меня есть страница, на которой я получаю содержимое из внешних файлов. Я получил index.php со ссылками, которые отправляют запросы через URL-адрес (например,? Links=home), который читается из другого файла, который просматривает массив и находит нужный файл. Все это работает! Но вот сложная часть: один из файлов включает несколько строк php-кодов, которые не будут выполнять свою работу, а просто висят в исходном коде. Да, вы можете увидеть команды в исходном коде, но это не то, что я прошу. Ни единого эха.

Вот некоторый код, который может объяснить ситуацию еще лучше.

Код, который получает url-команду:

<?php
function load_pages() {
    if ($_GET['link'] != NULL) {
        $link = $_GET['link'];
        $links = array("hem" => "hem.php", "about" => "about.php", "blogg" => "blogg.php", "kontakta" => "kontakta.php");
        foreach ($links as $key => $value) {
            if ($key == $link) {
                $file = "links/" . $value;
                $fh = fopen($file, "r") or exit("Unable to open the file.");
                $fileContent = fread($fh, filesize($file));
                fclose($fh);
                echo $fileContent;
            }
        }
    } else {
        $file = "links/hem.php";
        $fh = fopen($file, "r") or exit("Unable to open the file.");
        $fileContent = fread($fh, filesize($file));
        fclose($fh);
        echo $fileContent;
    }
}
?>

Файл, который получает команду для страницы, которую я хочу загрузить:

<?php
include ("../include/functions.php");
connect();
?>

<h1>Blogg</h1>
<?php
if ($_GET['id'] == NULL) {
    blogg_content();
} else {
    blogg_link();
}
?>

<div id="blogg_menu">
    <?php blogg_menu(); ?>
</div>

Что получается: Blogg Это просто не работает, так что я могу изменить, чтобы он давал мне содержание блога и тому подобное? (Страница написана на шведском языке, просто чтобы исключить любые опечатки в слове "Blogg".)

  • Разве вы не ищете просто оператор include, возможно, с ob_start перед ним? (О, и всегда require_once или include_once функциональных файлов). Wrikken 03.08.2011
  • Он не будет читать php, поэтому включать в этом случае было бы бесполезно. Раньше у меня был include-тег, он также попал на индексную страницу. Richard Atterfalk 03.08.2011
  • Эм, если include это не то, что вам нужно, я совершенно не понимаю, что вы хотите отправить клиенту. Необработанный PHP-код? Потому что это то, что у вас есть сейчас, и, похоже, это не то, чего вы хотите. Wrikken 03.08.2011
  • Я получил включение в индексный файл, а также в файл блога. Но совсем не вышло. Если у вас есть идея, не могли бы вы опубликовать пример кода для меня? Richard Atterfalk 03.08.2011
  • Короткий фрагмент из источника представления: ‹div id=content› ‹?php include (../include/functions.php); соединять(); ?› | Это не из моего редактора, а из исходного кода в веб-браузере. Richard Atterfalk 03.08.2011
  • Да, потому что вы отправляете необработанный код PHP (он должен быть обработан на сервере, если вы этого не хотите). Сделайте две вещи: (1) Каждый include вашего functions.php файла должен стать include_once во всех файлах из массива $links. (2) Затем include эти файлы вместо чтения. Если это не сработает, пожалуйста, опишите нам, что на самом деле происходит, если вы говорите "совсем не сработало". Wrikken 03.08.2011

phpgetfopenfread

Ответы

Ответ 1 · рейтинг 2 · aefxx

Если эти файлы содержат код PHP, который вы хотите выполнить, вам нужно include или require их, а не повторять необработанные данные.

См. документацию по PHP, чтобы узнать, как включать файлы кода.

РЕДАКТИРОВАТЬ По вашему описанию трудно сказать, но если это вообще возможно, вам придется сделать что-то вроде:

...
if ($key == $link) {
    $file = "links/" . $value;
    include_once $file;
}
...

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы