@ifap

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

Есть 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 для каждого полученного значения, а затем еще как-то понимать, что данный уникальный файл со значением больше не нужен и его можно стирать…

В общем, все способы удаления гланд нетрадиционным образом я, кажется, перебрал, надеюсь, упустив простой и традиционный, который рассчитываю узнать от опытных пэхэпэводов ;)
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 2
@rPman
Выбрав SSI ты заранее создал себе проблемы.
Собирать страницу из кусочков можно на самом php, прямо в твоем process.php (именно так и делают), а с помощью mod_rewrite веб сервера скрывают .php от пользователя, оставив /process

Так же совершенно нормально (с оговорками про поисковые системы, роботы еще не очень хорошо читают такие страницы но все решаемо) формировать страницу не на сервере а на клиенте, с помощью javascript (такой подход активно используется в SPA веб приложениях), в этом и похожих случаях необходимые переменные передаются с сервера на клиент с помощью технологии ajax (на основе fetch или XMLHttpRequest, сам ajax реализован в популярном jquery) а еще лучше с помощью websocket (но нужно на сервере уже бакэнд с его поддержкой), ведь это позволит не только клиенту запрашивать данные но и серверу оперативно передавать данные клиенту по своему желанию а не когда спросят.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Используйте Javascript, его вполне можно статично вписать в result.html. А данные для отображения храните или в localStorage браузера (вот и персонализированный вывод, для каждого пользователя свой), или в cookie опять-же браузера, но туда много данных - не влезет.

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

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы