Как сделать чтобы html работал как php

Добавил пользователь Евгений Кузнецов
Обновлено: 05.09.2024

Прежде всего, стоит понимать, что html это лишь язык разметки. Грубо говоря HTML - это то, что отдается в браузер, когда Вы заходите на ту или иную страницу. HTML-код также может быть результатом работы php скрипта.

Когда кто-то интересуется "Как подключить php в html", то он имеет в виду примерно следующее.
Имеется html-страница, и в каком-то ее участке должен быть выполнен php-код, который произведет какую-то работу, например получение данных, и выведет результат.

Приведенный выше код, и является ответом на вопрос.

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

Сначала при помощи php идет разбор запроса пользователя, получение необходимых данных из базы (например), их обработка, и лишь затем эти данные отдаются пользователю, который их запросил. При этом, запрошенные данные могут быть оформлены в html код.

То, каким образом происходит оформление результатов работы php скрипта, в html-код называется шаблонизацией. Иными словами, у нас уже должен быть готовый html-шаблон, в котором заранее подготовлено место, для вывода данных.

Шаблонизация является неотъемлемой частью веб-программирования и следующая статья обязательна к прочтению, даже если вы уже написали пару сайтов:
Шаблонизация в PHP.

Подскажите плиз как заставить сайт на html обрабатывать php код, ни в какую не хочет.

Домен добавлен на сервер с поддержкой PHP как CGI

В .htaccess прописано следующее:

AddHandler php-cgi .html .htm .phtml .php

RewriteRule ^robots.txt$ - [L]
RewriteRule ^sitemap.xml$ - [L]

RewriteCond % !/_routing.php$
RewriteRule ^(.*)$ _routing\.php\?$1 [QSA,L]

Ответ тех. поддержки хостинга, тоже не дал надежд(

Запись AddHandler php-cgi .html .htm .phtml .php верна.
Вставки php в html начинают работать только если отключить этот кусок кода в .htaccess :

RewriteRule ^robots.txt$ - [L]
RewriteRule ^sitemap.xml$ - [L]

RewriteCond % !/_routing.php$
RewriteRule ^(.*)$ _routing.php?$1 [QSA,L]

Но если его отключить - сайт перестаёт корретно отображаться.
Копромиса, к сожелению найти не удалось.

Вопрос: У меня сайт на чистом HTML, как мне вставить скрипт?

Ответ: В корневом файле .htaccess (если его нет, то нужно создать в корневой папке сайта) добавить строчку:

AddHandler cgi-script .html .htm

LEOnidUKG:
Вопрос: У меня сайт на чистом HTML, как мне вставить скрипт?

Ответ: В корневом файле .htaccess (если его нет, то нужно создать в корневой папке сайта) добавить строчку:

AddHandler cgi-script .html .htm

Спасибо, пробовал без результатно, сейчас еще раз попробую.

Увы но результат такой же, php не обрабатывается, а в большинстве случаев и вовсе сайт перестает работать и вместо открытия страницы предлагает скачать файл _routing.php я так понимаю в нем и проблема наверное кроется.

Вот его содержание:

$row['realname'] = trim($matches[1]);
$row['ctype'] = trim($matches[2]);

function get_node_sqlite3($uri) global $conf;

if (!_enabled('sqlite3')) die();
if (!file_exists($conf['sqlite3']['db'])) die("SQLITE ERROR: NO ROUTING DB");

$db = new SQLite3($conf['sqlite3']['db']);
if (!$db) die("SQLITE ERROR: DB OPEN FAILED");

$stmt = $db->prepare("SELECT * FROM `".$conf['sqlite3']['table']."` WHERE `uri` = :uri LIMIT 0,1");
$stmt->bindValue(':uri', $uri);
$res = $stmt->execute();
if ($row = $res->fetchArray(SQLITE3_ASSOC)) return $row;
> else return false;
>

function get_node_mysql($uri) global $conf;

$db = mysql_connect($conf['mysql']['host'], $conf['mysql']['user'], $conf['mysql']['pass']) or die("db open error: ".mysql_error());
mysql_select_db($conf['mysql']['db']) or die("cannot select db: ".mysql_error());
mysql_query("SET NAMES utf8");

$uri = mysql_real_escape_string($uri);
$query = "SELECT * FROM `".$conf['mysql']['table']."` WHERE `uri` = '$uri' LIMIT 0,1";
$res = mysql_query($query) or die(mysql_error());
if ($row = mysql_fetch_assoc($res)) return $row;
> else return false;
>

function get_uri_heuristic() global $conf;
//$p = $_SERVER['QUERY_STRING'];
$z = $_SERVER['REQUEST_URI'];

$z = preg_replace('/^'.quotez($conf['site_uri']).'/', '', $z, 1); // только 1 замена
if ($z == "index.html") $z = ""; // на некоторых серваках такой сброс нужен

function _enabled($opt) switch($opt) case 'sqlite3':

if (!class_exists('SQLite3')) print nl2br('SQLITE_3 NOT ENABLED

sudo apt-get install php5-sqlite

and restart Apache');
return 0;
> else return 1;
>

$ret = preg_replace('/^'.quotez($r).'/', '', $s);
$ret = preg_replace('/'.quotez($script_name).'$/', '', $ret);
if (!$ret) $ret="/";
return $ret;
>

foreach (glob("$_dir/*.inc.php") as $filename) include_once($filename);
>

foreach($assert as $mask => $val) foreach(glob("$_dir/*$mask") as $fname) if (file_exists($fname)) ob_start();
include_once($fname);
$assert[$mask] .= ob_get_clean();
>
>
>

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

Для начала добавьте в .htaccess (находится в корне любого сайта) следующие строки

Эти строки включают обработку PHP кода в файлах с расширением .php , .htm , .html .

Теперь можно пользоваться php как и обычных файлах .php. Чтобы проверить работу PHP создайте файлик .html со следующим содержимом:

Если появилась надпись php работает и версия, то php обрабатывается. Если у Вас возникли трудности, то рекомендую сразу писать в тех.поддержку хостинга. Они должны помочь и дать ответ почему что-то может не работать.

Напомню, что - открывает зону действия php скриптов, а ?> - закрывает ее.

По умолчанию ".html .htm" отсутствует. Теперь делаем рестарт денвера и пользуемся.

В этом файле (желательно в начале) вводим следующие три строки:

где login_ftp0 – это логин для входа на ваш FTP сервер.

Теперь, в результате наших действий web-страницы с расширением html и htm, размещенные на хостинге смогут обрабатывать PHP вставки.

Выполнение кода PHP в страницах HTML на Денвере

Многие из нас, при создании сайта, используют локальный сервер Денвер. То есть, создают сайт на своем локальном компьютере, тестируют его и уже потом размещают на хостинге.

В данном случае, Вы также можете использовать файл .htaccess, создав и поместив его в корень вашего сайта.

В данный параметр добавляем расширения html и htm и получаем строку вида:

Теперь, для корректной интерпретации файлов с расширением html .htm необходимо вставить между строками

Производим рестарт сервера Apache, который можно сделать с помощью файла Restart Denwer. Далее, обновляем страницу на нашем локальном сервере (F5) и видим исполнение PHP вставок в файлах html и htm.

Еще один способ выполнения кода PHP в страницах HTML

Существует еще один, самый простой, но к сожалению не всегда применимы способ запуска PHP вставок.

Этот способ, при котором не нужно вносить какие либо изменения ни в Денвере, ни в файле .htaccess на хостинге.

Для этого нужно всего навсего переименовать расширение файла из html/htm в php, не внося изменений внутри файла.

Конечно, существуют некоторые ограничения в этом способе. Если Ваш проект был сверстан с использованием html/htm страниц, то придется менять расширение на отдельных файлах или во всем проекте целиком, что не всегда целесообразно. Поэтому, использование файла .htaccess на хостинге – является оптимальным.


Приветствую читателей блога! У вас наверняка уже есть небольшой опыт в кодинге на PHP. Возможно, вы уже разобрались с использованием переменных и базовых конструкций этого языка, а значит, логика вашего приложения увеличивается, как и количества кода.

Конечно, пока вся программа уменьшается в десяток строк, разбивать её на части не нужно. Но вы уже понимаете, что так будет не всегда: авторизация, отправка писем, взаимодействия с базой данных и т.д. – все это приведет к увеличению кода приложения.

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

Представим, что у нас есть 2 файла: `index.php` и `1.php`, лежащих в одной директории.


Задача: вывести содержимое файла "1.php" в контейнере `body`, при запуске файла "index.php". Решить её можно разными способами, и в этом посте мы рассмотрим некоторые из них. Подключение PHP возможно с помощью разных инструкций:

  • `include`
  • `include_once`
  • `require`
  • `require_once`

Самый простой пример решения с `include`:

Результат запуска в браузере:


Как подключить PHP из другой директории

Теперь изменим условия. Переместим файл `1.php` в папку с названием `test`, которую создадим в директории с файлом `index.php`.


Поскольку подключаемый файл находится в другой директории, для его подключения следует указать сначала папку, в которой он находится, а потом и сам файл.

Далее изменим код в `index.php`.

Строка, что мы указываем после инструкции `include`, это путь к файлу. Он может быть относительный (к файлу, где используется подключение) и абсолютным (от корня файловой системы). В приложениях рекомендуются использовать относительные пути.

Между папками, файлами и другими папками в пути устанавливаются разделители. Универсальный разделитель для различных операционных систем – `/`.

Если в папке `test` у нас была бы еще папка `lot`, в которой лежал файл `1.php`, то относительный путь выглядел бы так: 'test/lot/1.php'.

С путями немного разобрались – возвращаемся к инструкциям. Произведем изменения в файлах. Файл "index.php":

Посмотрим на изменение в выводе:


Как работает подключение кода PHP

Перед подключением и исполнением файла "1.php" уже существует переменная `$say`, в которой содержится 'Hello world!'. При выполнении файла "1.php", содержимое этой переменной выводится на экран и создается переменная `$test`, которая в свою очередь и выводится на экран в файле `index.php`.

Если описанное выше непонятно, советую немного поиграться с файлами `1.php` и `index.php` создавая и выводя в них переменные.

Различия `include`, `include_once`, `require`, `require_once`

Переименуем файл "1.php"в файл "2.php" и обратимся к "index.php":


В итоге получаем ошибку. Но обратите внимание на то, что после вывода ошибки код PHP все равно продолжил выполнение и вывел `End`. Заменим `include` на `require` и запустим на выполнение.


В итоге видим похожие ошибки, но не видим вывода `End` в конце: после ошибки код php прекратил свою работу.

Разница между `include` и `require` заключается в том, что при подключении файла PHP первая инструкция позволяет продолжить выполнения скрипта, если не найден файл, а `require` завершает его, выводя фатальную ошибку.

Теперь рассмотрим отличие инструкций `require` и `require_once`. Внесем небольшие правки в наши файлы. Вот новый "index.php":


Как видно на скриншоте, с помощью `require` мы успешно подключили файл несколько раз. Снова внесем изменение в файлы. Новый файл "index.php":

И новый файл "2.php" — на этот раз объявим там функцию:


Второе подключение файла "2.php" приводит к ошибке, как раз потому что в этом файле происходит объявление функции. А в PHP-скрипте двух одинаковых функций быть не должно.

Теперь заменим все `require` на `require_once` и запустим снова:


Ура, работает! Но обратим внимание на то, что файл подключился только один раз.

Теперь вновь переименуем файл `2.php` в `1.php` и запустим "index.php".


`Require_once`, так же как и `require` завершает выполнение скрипта, если не найден файл указанный для подключения. Заменим `require_once` на `include_once`:


Ошибок стало больше, но код по-прежнему отработал до конца: end в конце картинки это подтверждает. Внесем правки в "index.php":


Подведём итоги

Чтобы подключить PHP-файлы, можно воспользоваться четырьмя похожими инструкциями — `include` и `include_once`, `require` и `require_once`.

  • Разница между `include` и `require`: при отсутствии файла последняя выводит фатальную ошибку, а первая — нет.
  • Разница между `include` и `include_once` (а также `require` и `require_once` соответственно): инструкции с “once” проверяют перед подключением, был ли этот файл подключен ранее. Если он подключался, повторного подключения не произойдет.
  • Разница между `require_once` и `include_once`: думаю, она понятна из двух предыдущих пунктов :)

Если вы хотите освоить PHP во всей его полноте — приглашаем вас на курсы PHP-разработки в GeekBrains. За шесть месяцев вы изучите не только работу с PHP, но и другие важные в профессии технологии — фреймворк Laravel, базы данных MS SQL и Postgre SQL, основы HTML/CSS и ООП. А также сможете пройти полноценную онлайн-стажировку!


Приветствую читателей блога! У вас наверняка уже есть небольшой опыт в кодинге на PHP. Возможно, вы уже разобрались с использованием переменных и базовых конструкций этого языка, а значит, логика вашего приложения увеличивается, как и количества кода.

Конечно, пока вся программа уменьшается в десяток строк, разбивать её на части не нужно. Но вы уже понимаете, что так будет не всегда: авторизация, отправка писем, взаимодействия с базой данных и т.д. – все это приведет к увеличению кода приложения.

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

Представим, что у нас есть 2 файла: `index.php` и `1.php`, лежащих в одной директории.


Задача: вывести содержимое файла "1.php" в контейнере `body`, при запуске файла "index.php". Решить её можно разными способами, и в этом посте мы рассмотрим некоторые из них. Подключение PHP возможно с помощью разных инструкций:

  • `include`
  • `include_once`
  • `require`
  • `require_once`

Самый простой пример решения с `include`:

Результат запуска в браузере:


Как подключить PHP из другой директории

Теперь изменим условия. Переместим файл `1.php` в папку с названием `test`, которую создадим в директории с файлом `index.php`.


Поскольку подключаемый файл находится в другой директории, для его подключения следует указать сначала папку, в которой он находится, а потом и сам файл.

Далее изменим код в `index.php`.

Строка, что мы указываем после инструкции `include`, это путь к файлу. Он может быть относительный (к файлу, где используется подключение) и абсолютным (от корня файловой системы). В приложениях рекомендуются использовать относительные пути.

Между папками, файлами и другими папками в пути устанавливаются разделители. Универсальный разделитель для различных операционных систем – `/`.

Если в папке `test` у нас была бы еще папка `lot`, в которой лежал файл `1.php`, то относительный путь выглядел бы так: 'test/lot/1.php'.

С путями немного разобрались – возвращаемся к инструкциям. Произведем изменения в файлах. Файл "index.php":

Посмотрим на изменение в выводе:


Как работает подключение кода PHP

Перед подключением и исполнением файла "1.php" уже существует переменная `$say`, в которой содержится 'Hello world!'. При выполнении файла "1.php", содержимое этой переменной выводится на экран и создается переменная `$test`, которая в свою очередь и выводится на экран в файле `index.php`.

Если описанное выше непонятно, советую немного поиграться с файлами `1.php` и `index.php` создавая и выводя в них переменные.

Различия `include`, `include_once`, `require`, `require_once`

Переименуем файл "1.php"в файл "2.php" и обратимся к "index.php":


В итоге получаем ошибку. Но обратите внимание на то, что после вывода ошибки код PHP все равно продолжил выполнение и вывел `End`. Заменим `include` на `require` и запустим на выполнение.


В итоге видим похожие ошибки, но не видим вывода `End` в конце: после ошибки код php прекратил свою работу.

Разница между `include` и `require` заключается в том, что при подключении файла PHP первая инструкция позволяет продолжить выполнения скрипта, если не найден файл, а `require` завершает его, выводя фатальную ошибку.

Теперь рассмотрим отличие инструкций `require` и `require_once`. Внесем небольшие правки в наши файлы. Вот новый "index.php":


Как видно на скриншоте, с помощью `require` мы успешно подключили файл несколько раз. Снова внесем изменение в файлы. Новый файл "index.php":

И новый файл "2.php" — на этот раз объявим там функцию:


Второе подключение файла "2.php" приводит к ошибке, как раз потому что в этом файле происходит объявление функции. А в PHP-скрипте двух одинаковых функций быть не должно.

Теперь заменим все `require` на `require_once` и запустим снова:


Ура, работает! Но обратим внимание на то, что файл подключился только один раз.

Теперь вновь переименуем файл `2.php` в `1.php` и запустим "index.php".


`Require_once`, так же как и `require` завершает выполнение скрипта, если не найден файл указанный для подключения. Заменим `require_once` на `include_once`:


Ошибок стало больше, но код по-прежнему отработал до конца: end в конце картинки это подтверждает. Внесем правки в "index.php":


Подведём итоги

Чтобы подключить PHP-файлы, можно воспользоваться четырьмя похожими инструкциями — `include` и `include_once`, `require` и `require_once`.

  • Разница между `include` и `require`: при отсутствии файла последняя выводит фатальную ошибку, а первая — нет.
  • Разница между `include` и `include_once` (а также `require` и `require_once` соответственно): инструкции с “once” проверяют перед подключением, был ли этот файл подключен ранее. Если он подключался, повторного подключения не произойдет.
  • Разница между `require_once` и `include_once`: думаю, она понятна из двух предыдущих пунктов :)

Если вы хотите освоить PHP во всей его полноте — приглашаем вас на курсы PHP-разработки в GeekBrains. За шесть месяцев вы изучите не только работу с PHP, но и другие важные в профессии технологии — фреймворк Laravel, базы данных MS SQL и Postgre SQL, основы HTML/CSS и ООП. А также сможете пройти полноценную онлайн-стажировку!

Читайте также: