Можно ли передать данные из PHP в «отдельностоящий» HTML?

Ссылка скопирована
24 января 2026 1 ответ

Есть PHP-обработчик данных из HTML-формы: в form.htm вводятся данные и делается POST к process.php, который их обрабатывает и в конце через header выдает result.htm

Содержимое result.htm – статика: «спасибо, что ввели данные, бла-бла-бла», но сама страница собирается через SSI (шапка, подвал, блоки второстепенной информации, присутствующие на каждой странице сайта).

Встала задача: result.htm кроме статичного текста должен выдавать и результат обработки данных, условно: «спасибо, что ввели данные, из них получено Х байт новых данных, бла-бла-бла». X без проблем считается в process.php (на самом деле это не цифра, а текст), а вот передать его оттуда в result.htm оказалось проблемой.

Тупо вызвать значение $bytes из result.htm не работает – вне process.php эта переменная не существует.

«Распечатать» весь result.htm «внутри» process.php через echo – много «но»: как внутрь PHP встроить вызов SSI? У фактического result.htm остается URL от process.php (не смертельно, но и не феншуй). И т.д.

Сохранить $bytes в отдельный файл, затем через header вызвать result.htm, в который через SSI встроить еще и этот отдельный файл – можно. Криво, но будет работать, но до тех пор, пока одновременно двое клиентов не воспользуются process.php, но получат одинаковые значения $bytes в связи с перезаписью пресловутого отдельного файла последним клиентом. Либо придется вводить уникальные ID для каждого полученного значения, а затем еще как-то понимать, что данный уникальный файл со значением больше не нужен и его можно стирать…

В общем, все способы удаления гланд нетрадиционным образом я, кажется, перебрал, надеюсь, упустив простой и традиционный, который рассчитываю узнать от опытных пэхэпэводов ;)

Дополнительно:

ssi внезапно может принимать параметры GET например. Каждый клиент может иметь сессию, и дальше вы можете делать что хотите

Ответы:

Выбрав SSI ты заранее создал себе проблемы.
Собирать страницу из кусочков можно на самом php, прямо в твоем process.php (именно так и делают), а с помощью mod_rewrite веб сервера скрывают .php от пользователя, оставив /process

Так же совершенно нормально (с оговорками про поисковые системы, роботы еще не очень хорошо читают такие страницы но все решаемо) формировать страницу не на сервере а на клиенте, с помощью javascript (такой подход активно используется в SPA веб приложениях), в этом и похожих случаях необходимые переменные передаются с сервера на клиент с помощью технологии ajax (на основе fetch или XMLHttpRequest, сам ajax реализован в популярном jquery) а еще лучше с помощью websocket (но нужно на сервере уже бакэнд с его поддержкой), ведь это позволит не только клиенту запрашивать данные но и серверу оперативно передавать данные клиенту по своему желанию а не когда спросят.

Используйте Javascript, его вполне можно статично вписать в result.html. А данные для отображения храните или в localStorage браузера (вот и персонализированный вывод, для каждого пользователя свой), или в cookie опять-же браузера, но туда много данных - не влезет.

Можно ещё прописать PHP код внутрь этого result.html, хранить данные на самом сервере, ну и собирать страницу динамически, хотя для обращающихся она будет выглядеть статичной.

Но в обоих вариантах дать ссылку на result.html другому человеку не получится, он на этой странице данных не увидит. Разве что ссылку result.html?data_id=0388473, но это сразу всё усложняет.

  • Можно ещё прописать PHP код внутрь этого result.html, хранить данные на самом сервере, ну и собирать страницу динамически, хотя для обращающихся она будет выглядеть статичной.

    Но как, Холмс? Вопрос в том и заключается: как result.html получить значение $bytes из process.php Что ссылку другим передать не получится - не проблема. Переменная содержит текстовое описание проблемы с формой или ее обработкой (если она возникает), конкретно для этого пользователя. Статичное "что-то пошло не так - попробуйте угадать, что именно" - знаю как, но это не решение.

  • ifap, как передать идентификатор результата? localStorage, cookie, $_SESSION, аргумент в URL, finвыбирайте.IP+UserAgent - выбирайте! Или опять не понятно, и надо опять перечислить?
  • AUser0, в итоге сделал так:
    readfile('header.htm'); echo $bytes; readfile('footer.htm');

    readfile('header.htm'); echo $bytes; readfile('footer.htm');

    Мне не нравится, что URL у конечного файла остается от PHP-обработчика, но это уже чистый феншэй, на который можно и забить, особенно если сравнить с предложенным Вами решением.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Да, конечно, можно передать данные из PHP в «отдельностоящий» HTML. Для этого существует несколько способов.

Один из способов - это использование PHP для генерации HTML кода с помощью echo или print. Например:

<?php
$variable = "Hello, World!";
echo &quot;<p>$variable</p>";
?&gt;

&lt;?php $variable = &quot;Hello, World!&quot;; echo &quot;<p>$variable</p>"; ?&gt;

В данном примере мы используем переменную $variable, которая содержит строку "Hello, World!", и с помощью echo выводим эту строку в тег

на странице.

Еще один способ - это использование PHP внутри HTML файла с расширением .php. Например:

 
 
 
    <title>PHP in HTML</title>
 
 
    &lt;?php
    $variable = &quot;Hello, World!&quot;;
    echo &quot;<p>$variable</p>";
    ?&gt;

<title>PHP in HTML</title> &lt;?php $variable = &quot;Hello, World!&quot;; echo &quot;<p>$variable</p>"; ?&gt;

В этом примере мы используем PHP код внутри HTML файла, что позволяет нам взаимодействовать с данными на сервере и динамически генерировать контент для пользователя.

Также можно использовать AJAX запросы для передачи данных из PHP в HTML. Например, с помощью jQuery:

 
 
 
    <title>AJAX Example</title>
 
 
 
    <div id="result"></div>
 
    $.get("data.php", function(data) {
        $("#result").html(data);
    });

<title>AJAX Example</title> <div id="result"></div> $.get("data.php", function(data) { $("#result").html(data); });

В этом примере мы отправляем AJAX запрос на сервер к файлу data.php, который возвращает данные, и затем отображаем эти данные на странице.

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно