передать массив в качестве параметра в файл PHP

0

Я пытаюсь создать кучу статических HTML-страниц из одного шаблона PHP. Я хочу передать массив (строку в БД MySql) в файл шаблона .php, чтобы я мог использовать содержимое в качестве переменных и вернуть HTML-страницу. Какой лучший способ сделать это? Запрос POST? Функция? Я просматриваю результаты запроса MySQL в следующем коде и создаю страницу .html для каждой строки, но я не уверен, как передать массив $row в файл "Template.php":

while ($row = mysql_fetch_array($result))
{

    $variableToPass = $row;
    $dynamicsource = fopen('Template.php', 'r');
    $htmldata = fread($dynamicsource, 1235);
    fclose($dynamicsource);

    $targetfilename = "row/"
        . $row['name']
        . ".html";
    $targetfile = fopen($targetfilename, 'w');
    fwrite($targetfile, $htmldata);
   }

Файл Template.php может выглядеть, например, как:

 <html>
    <body>
      <?php
         include 'mySqlTests.php';
         print_r($variableToPass);
      ?>
      other text and stuff
    </body>
</html>
Теги:
variables

1 ответ

0

Таким образом, в основном вы хотите получить некоторые данные из базы данных, а затем использовать файл PHP в качестве шаблона для создания HTML файла.

Самый простой способ сделать это - просто include шаблон в соответствующей точке кода генератора шаблонов; вы можете поместить ob_start и ob_get_clean вокруг вызова, чтобы захватить вывод в строку вместо отправки его клиенту. Переменные в области, из которой вызывается include, будут доступны внутри включенного файла. Пример:

<?php
foreach ($rows as $row) {
    ob_start();
    include 'template.php';
    $data = ob_get_clean();
    file_put_contents('target/' . $row['name'] . '.html');
}

... и шаблон мог бы делать такие вещи, как:

           

Есть некоторые соображения с этим подходом:

  • Если шаблоны содержат опасный код, он будет выполнен.
  • Шаблон имеет доступ ко всем переменным, которые находятся в области на момент включения, включая переменные, которые вы не хотите изменять. Это можно несколько смягчить, поставив вызов шаблона в выделенную функцию.

Другой подход - сделать простой поиск и замену загруженного шаблона; вместо того, чтобы использовать PHP в качестве языка шаблонов, вы в основном изобретаете свои собственные. Это менее эффективно, но безопаснее, потому что вы ограничиваете доступ шаблона к внутренним функциям вашей программы.

Еще один вариант - это база данных для XML через XSLT-маршрут - загружайте свои данные, преобразуйте их в XML-представление, примените XSLT-шаблон, который выводит (X) HTML. Это обеспечивает гибкость и безопасность от инъекций, но XSLT довольно сложно освоить, сложнее отладить, а преобразование в XML менее эффективно, чем прямой путь к PHP.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню