2014-11-06 74 views
0

我有一個現有的SHTML頁面,其中包含幾個菜單的INCLUDE語句。這工作得很好。對於這一點,我的.htaccess文件了像:啓用PHP解析器和Include語句

Options +FollowSymLinks 

我的include語句是這樣的:

<!--#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語句不再起作用。如何在同一個SHTML頁面中同時啓用PHP和#Include代碼?非常感謝你看這個。

+0

談到一個很老的頁面是否有要求HTML包括? PHP也可以包含頁面。 – 2014-11-06 13:02:40

回答

0

在你的PHP腳本,你可以調用virtual功能與SSI合作

<?php 
virtual('menu_primary.shtml'); 

有大約對此進行了更詳細 http://www.zytrax.com/tech/php/php_ssi.htm

+0

嗨Mahavity,謝謝你的回答。最終爲我工作的是和你提供的稍有不同。在我使用的SHTML文件裏面:<?php include(「menu_primary.shtml」); ?> – user3138025 2014-11-07 12:04:41