У меня есть существующая страница SHTML с несколькими операторами INCLUDE для меню. Это сработало хорошо. На данный момент мой файл .htaccess выглядит так:
Options +FollowSymLinks
И мое предложение «Включить» выглядело так:
<!--#include virtual="menu_primary.shtml" -->
У меня есть новая необходимость добавить PHP-код на главную страницу. Код PHP запрашивает базу данных Mysql, чтобы вернуть одну строку. Если строка существует в базе данных, я хочу показать ее на странице SHTML. Если строка не существует, ничего не делать. Вот код PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$servername = "localhost";
$username = "myusername";
$password = "mypassword";
$dbname = "mydbname";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT notice from notification where page = 'home'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "Message is: " . $row["notice"]. "<br>";
}
} else {
echo "";
}
mysqli_close($conn);
?>
</body>
</html>
Когда я реализовал этот PHP-код, страница, казалось, интерпретировала все после символа «Больше чем» как текст. Когда я опубликовал эту проблему, кто-то на этом форуме предложил изменить файл .htaccess, чтобы включить парсер PHP. Какое-то время. Я изменил свой файл .htaccess, чтобы он выглядел так:
Options +FollowSymLinks
<FilesMatch "\.(htm|html|shtm|shtml)$">
SetHandler application/x-httpd-php5
</FilesMatch>
Однако когда я делаю это, код PHP работает нормально, и я отображаю данные из базы данных на странице SHTML, но операторы #Include больше не работают. Как включить код PHP и #Include вместе на одной странице SHTML? Большое спасибо за внимание к этому.
В вашем скрипте PHP вы можете вызвать виртуальный функция для работы с вашим SSI
<?php
virtual('menu_primary.shtml');
Есть очень старая страница, которая говорит об этом более подробно
http://www.zytrax.com/tech/php/php_ssi.htm
Других решений пока нет …