Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Программирование

PHP-код в HTML-файле не работает, в php-файле - работает. Почему? : Программирование

19.03.2024 14:11


27.06.2015 21:47
KirillHome
 
Windows 7, IIS 7.5, PHP 5.6.10

файл index.php
Код:
<?php
  phpinfo();
?>
отрабатывает нормально

файл index.html что в виде
Код:
<html>
 <?
   phpinfo()
 ?>
</html>
, что в виде
Код:
<html>
 <?php
   phpinfo()
 ?>
</html>
ничего не выводит.

В чём может быть "засада"?

Для справки, файл tst.html в виде
Код:
<html>
<form name="phpinfo" action="http://localhost/index.php" method="post">
   <button>Connect</button>
</form>
</html>
выводии кнопку Connect, нажатие на которой нормально вызывает phpinfo() из index.php
27.06.2015 21:49
Micle
 
в index.html не хватает ; в конце строки после phpinfo()
27.06.2015 22:08
KirillHome
 
Дело не только в этом, увы (но за замечание о ошибке синтаксиса - спасибо!).

Есть рекомендация сделать файл .htaccess с содержимым
Код:
AddHandler application/x-httpd-php .php .html .shtml .htm
не помогло.
28.06.2015 12:06
OlegON
 
Рекомендую заменить IIS на что-то нормальное. В данном случае проблема в том, что статика отдаётся как есть, а исполняемые файлы отдаются интерпретатору, который может выводить и статику. Тут все зависит от настроек вебсервера, но настоятельно не рекомендую настраивать на выдачу html через обработчик. Это то, что начал делать в #3. Зачем тебе вообще код в статике? Может, про JS речь?
28.06.2015 13:09
KirillHome
 
На самом деле это "самые первые шаги" в попытке сделать web-сервис (как громко сказано то ) проверки цен/остатков.
Понимания того, что и как нужно делать - у меня, увы, нет (ни разу ничего подобного не делал).

С чего начал:
Так как IIS - поднят и используется, то - поставил PHP, сделал сопоставление обработчика PHP, пытался запустить примеры с простыми формами обработки результата (типа - "Введите имя", "Год рождения" - и получить ответ - "Вам ВведенноеИмя бла-бла-бла лет").
Сразу заткнулся на том, что в данных примерах есть "участки php" в html, которые у меня - не работают.
28.06.2015 13:36
OlegON
 
Так и вопрос, зачем ты путаешь статику и динамику? Html отдаются, как есть. Php отдаются обработчику, а его вывод возвращается веб-серверу. Сначала алгоритм нарисуй, а потом раздели, где у тебя статика, а где код.
28.06.2015 16:53
KirillHome
 
Я не понимаю, что значит "статика" и "динамика" в данном случае.

Что мне видится:
Форма, в которой вводится штрихкод товара и выводится информация о названии товара, цене, остатке на складе (возможно - какая-то ещё дополнительная информация - к примеру старая/новая цена во время действия скидок).
После получения штрихкода мне, по сути, надо будет запустить внешнее приложение, передав в него в качестве параметров:
  • этот штрихкод (как вариант - записав штрихкод во входной текстовый файл, а уж внешнее приложение будет читать из текста)
  • имя выходного текстового файла.
Внешнее приложение запишет информацию в выходной текстовый файл, из которого потом надо считать данные и отобразить на первоначальной форме.
Пока всё.
29.06.2015 02:42
aldemko
 
Цитата:
KirillHome Дело не только в этом, увы (но за замечание о ошибке синтаксиса - спасибо!).

Есть рекомендация сделать файл .htaccess с содержимым
Код:
AddHandler application/x-httpd-php .php .html .shtml .htm
не помогло.
Попробуй в .htaccess вместо указанного тобой кода, прописать:

<IfModule mod_suphp.c>
AddHandler x-httpd-php5 .html .htm
</IfModule>


Или
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml

но в принципе должен сработать первый.
У меня по крайней мере в файле html обрабатывается phpinfo с первым вариантом
29.06.2015 13:52
OlegON
 
Чтобы закрыть вопрос с непониманием статики и динамики. Статика - это файл, который отдается "как есть". Это картинки, например, архивы, И, файлы html. Сервер их никак не обрабатывает, они никак не изменяются. Динамика начинается, когда на странице изменяются какие-то данные и делает это сервер. Например, эта страница - динамика. Ее в том виде, как ты видишь, не существует. Она обрабатывается каждый раз, т.е. веб-сервер знает, что php надо отдать соответствующему обработчику, а то, что он вернет (вывод) использовать, как если бы это была страница с диска. Т.е. читает не с диска, а из вывода обработчика. Обработчик при этом, в зависимости от условий, может выводить совершенно разные данные.

Форма ввода, например, статична, если ты только не задаешь разные вопросы на ней (у тебя выводится цена и остатки, т.е. динамичная форма). Никакие внешние приложения тебе не нужны, т.е. такой подход крайне вреден для многопользовательской среды, сожрет уйму ресурсов. Старайся обойтись PHP, он много что умеет. И, да, не передавай ВСЕ в обработчик. Хоть он и будет пропускать то, что не является его кодом, все равно, на то, чтобы задействовать обработчик, уходит достаточно много ресурсов, что сказывается на скорости работы сервиса.
29.06.2015 14:20
KirillHome
 
Цитата:
OlegON ...Никакие внешние приложения тебе не нужны, т.е. такой подход крайне вреден для многопользовательской среды, сожрет уйму ресурсов. Старайся обойтись PHP, он много что умеет
Увы, но на сколько я в курсе - закрытый формат не позволит мне напрямую получать данные из базы. Есть, конечно, вариант - раз в 10 минут выгружать полностью информацию в текст, и уже этот текст - подгружать в какой-то "открытый формат".
Цитата:
OlegON ...И, да, не передавай ВСЕ в обработчик. Хоть он и будет пропускать то, что не является его кодом, все равно, на то, чтобы задействовать обработчик, уходит достаточно много ресурсов, что сказывается на скорости работы сервиса.
А вот этого пока не понял совсем.

Всем спасибо.
Пока "план занятий" ясен:
1) Создать форму на PHP
2) Данные, введённые пользователем - куда-то сохранить/записать/передать
3) Откуда-то взять данные ответа, отобразить их на форме.
4) Понять, что делать, когда пользователей - несколько (запрос пользователя 1 должен вернуться ему, а не пользователю 2).
5) Обработать "проблемные ситуации" - ответ не вернулся за какое-то приемлемое время и т.п.
Часовой пояс GMT +3, время: 14:11.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.