Как сделать чтобы html работал как php
Прежде всего, стоит понимать, что 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 и ООП. А также сможете пройти полноценную онлайн-стажировку!
Читайте также: