Могу ли я включить файл PHP в файл SHTML и сохранить результат в переменной SHTML?

Я хочу включить файл PHP в файл SHTML и сохранить результат в переменной SHTML и включить разные вещи в зависимости от результата.

Пример:
Предположим, что PHP-скрипт будет отображать 0/1 в виде обычного текста (в зависимости от чего-то вроде времени или чего-то еще). А затем в SHTML я хотел бы сохранить вывод этого файла PHP в переменной SHTML. Затем, если значение, хранящееся в этой переменной, равно 1, включите файл A.html, иначе включите файл B.html.


person Adam Lynch    schedule 13.05.2011    source источник
comment
Как видно из ответа tadywankenobi, это не должно сочетаться естественным образом. Возможно, вы можете использовать PHP в качестве генератора SHTML или типа того, но чтобы дать пример/ответ, вы должны попытаться предоставить небольшие примеры частей PHP и SHTML, которые что-то включают.   -  person ZoolWay    schedule 13.05.2011
comment
@Zoolway Просто предположим, что PHP-скрипт будет отображать 0/1 в виде простого текста (в зависимости от чего-то вроде времени или чего-то еще). А затем в SHTML я хотел бы сохранить вывод этого файла PHP в переменной SHTML. Затем, если значение, хранящееся в этой переменной, равно 1, включите файл A.html, иначе включите файл B.html.   -  person Adam Lynch    schedule 13.05.2011


Ответы (4)


Не кажется возможным. SHTML использует разные методы анализа кода, поэтому я не думаю, что PHP будет работать на странице, чтобы вернуть значение SHTML. Почему вы это делаете, почему бы не использовать PHP напрямую?

person tadywankenobi    schedule 13.05.2011
comment
@tadywankenobi PHP будет выводить 1/0 в виде простого текста, поэтому нет необходимости анализировать код. Я говорю здесь о МНОГО shtml-страниц. Плюс я думаю, что они .shtml для ускорения индексации сайта Google или что-то в этом роде. - person Adam Lynch; 13.05.2011
comment
Ах, хорошо, так что это уже существующий контент. Я бы порекомендовал запустить ваш php-код извне для вывода в другой файл shtml и включить этот файл. Я знаю, что это только 1/0, но, по крайней мере, таким образом вы сохраняете свои форматы согласованными. - person tadywankenobi; 13.05.2011
comment
Не могли бы вы уточнить? Мне нужно сделать две разные вещи в зависимости от вывода PHP. - person Adam Lynch; 13.05.2011
comment
Во-первых, для индексации Google не должно иметь значения, написан ли сайт на PHP или SHTML. Но для временных ограничений я бы рекомендовал вам создать файл PHP, к которому вы можете получить доступ, скажем, с помощью вызова AJAX, который вернет нужное вам значение. На самом деле, делая это таким образом, вы можете пропустить включение, о котором я упоминал ранее, о создании нового SHTML. Подойдет ли это для ваших целей? Что угодно, лишь бы предотвратить одновременный анализ двух форматов (PHP и SHTML). Это разные технологии, поэтому их нельзя запускать вместе... - person tadywankenobi; 13.05.2011
comment
@tadywankenobi Итак, вы предлагаете сохранить shtml и добавить немного JavaScript, который вызывает PHP и делает что-то на основе результата? т.е. используя JavaScript в качестве посредника? Звучит неплохо. За исключением случаев, когда JavaScript отключен, PHP-скрипт не вызывается и отображается остальная часть файла. Если я не получу JS для отображения, эта страница требует Javascript по умолчанию и выводит содержимое, если результат PHP правильный. Но тогда Google не может индексировать контент - person Adam Lynch; 13.05.2011

Допустим, у вас есть файл template.shtml с текстом @@PHPVARHERE@@ где-то в нем.

Пользователь вызывает script.php?var=1. Не сценарий загружает содержимое файла template.shtml (file_get_contents) и выполняет str_replace, чтобы заменить @@PHPVARHERE@@ на $_REQUEST['var'] (в данном случае 1).

Затем скрипт выводит все это в file1.shtml. Если файл уже существовал, используйте существующий файл или перезапишите его - как в этой ситуации.

Таким образом, скрипт динамически создает соответствующие shtml-файлы на лету во время выполнения. Просто добавьте Header('Relocate: file1.shtml');, и скрипт перенаправит браузер на сгенерированный файл.

Это самое близкое, что вы можете получить из того, что я понял.

person ZoolWay    schedule 13.05.2011
comment
Значит ли это, что вместо отправки пользователя на page234.shtml я отправлю его на page234.php? Который затем печатает, какой контент зависит от X? Если я меняю файл, к которому пользователь переходит, на PHP, то я мог бы просто использовать PHP напрямую и указать серверу обрабатывать SHTML как PHP. Извините, если мой вопрос слишком запутанный - person Adam Lynch; 13.05.2011
comment
Простое переключение для включения другого документа на основе переменной — простая задача для PHP, поэтому до сих пор я уверен, почему вы вообще используете SSI. Этот ответ говорит, что пользователь вводит script.php?var=**XX**. Сценарий создает страницуXX.shtml, если необходимо, и перенаправляет пользователя. Таким образом, вы получаете нужные вам файлы page_something_.shtml (если это так), но все они управляются одним PHP-скриптом. В этом случае файлы shtml не должны содержать PHP. Как я уже сказал, я все еще чувствую, что вам вообще не нужны документы SSI/shtml. - person ZoolWay; 13.05.2011
comment
Я согласен, что мы не должны использовать SSI. Вот как это было сделано, и я пытаюсь реализовать эту новую функциональность, но я думаю, что единственный файл PHP с расширением .shtml - лучший вариант. Google слишком важен; мы не хотим менять какие-либо URL-адреса - person Adam Lynch; 13.05.2011
comment
Если вы хотите, чтобы старые URL-адреса оставались действительными, перепишите их на своем веб-сервере (надеюсь, Apache), чтобы они соответствовали вашему единственному PHP-скрипту! - person ZoolWay; 13.05.2011
comment
Это ИИС. И мы говорим о МНОГО страниц - person Adam Lynch; 13.05.2011
comment
Затем, возможно, выполните поиск перезаписи URL-адресов в IIS/задайте новый вопрос. В ваших существующих URL-адресах есть какая-то логика? Как особая часть станет одной или несколькими переменными в вашем PHP-скрипте. Таким образом, решение этой проблемы: напишите хороший отдельный PHP-скрипт и сопоставьте существующие URL-адреса с перезаписью URL-адресов со сценарием, чтобы существующие ссылки на других страницах (и, следовательно, в Google) не ломались. - person ZoolWay; 13.05.2011

Ответ, кажется, НЕТ.

ПРИМЕЧАНИЕ. Вероятно, его следует реализовать исключительно с использованием PHP и директивы сервера для обработки файлов .shtml как PHP.

person Adam Lynch    schedule 16.05.2011

Чтобы выполнить PHP на странице .shtml, нужно изменить файл .htaccess. Этот файл может быть скрыт, поэтому в зависимости от вашей FTP-программы вам может потребоваться изменить некоторые настройки, чтобы увидеть его. Тогда вам просто нужно добавить эту строку для .shtml:

AddType application/x-httpd-php .shtml

Если вы планируете включить PHP только на одной странице, лучше настроить следующим образом:

<Files yourpage.shtml>
AddType application/x-httpd-php .shtml
</Files>

Этот код сделает исполняемый файл PHP только для файла yourpage.shtml, а не для всех ваших shtml-страниц.

person Chris Michaelides    schedule 23.10.2011