2011-05-13 42 views
0

我想將一個PHP文件包含在SHTML文件中,並將結果存儲在SHTML變量中,並根據結果包含不同的內容。我可以在SHTML文件中包含PHP文件並將結果存儲在SHTML變量中嗎?

例如:
假設PHP腳本以純文本形式回顯0/1(取決於諸如時間之類的內容)。然後在SHTML中,我想將該PHP文件的輸出存儲在SHTML變量中。那麼如果存儲在該變量中的值是1,則包含fileA.html,否則包含fileB.html。

+0

正如你所看到的tadywankenobi的答案,這是不能自然結合。也許你可以使用PHP作爲SHTML生成器或類型,但舉個例子/答案,你應該嘗試提供一些包含PHP和SHTML部分的小例子。 – ZoolWay 2011-05-13 12:07:30

+0

@Zoolway假設PHP腳本會以純文本的形式回顯0/1(取決於諸如時間之類的東西)。然後在SHTML中,我想將該PHP文件的輸出存儲在SHTML變量中。那麼如果存儲在該變量中的值是1,則包含fileA.html,否則包含fileB.html。 – 2011-05-13 13:26:07

回答

0

答案似乎是

NOTE: 它應該完全使用PHP和服務器指令將.shtml文件作爲PHP進行處理。

0

聽起來不可能。 SHTML使用不同的方法解析代碼,所以我不認爲PHP將在頁面上運行以向SHTML返回一個值。爲什麼你這樣做,但爲什麼不直接使用PHP呢?

+0

@tadywankenobi PHP會以純文本輸出1/0,所以不需要解析代碼。我在這裏談論** LOT **的shtml頁面。另外我認爲他們是.shtml加快谷歌索引該網站或類似的東西 – 2011-05-13 11:33:09

+0

好吧,所以它已經是現有的內容。我會推薦的是,已經運行你的外部代碼輸出到另一個shtml文件幷包含該文件。我知道這只是1/0,但至少你保持你的格式一致。 – tadywankenobi 2011-05-13 11:39:32

+0

你能否詳細說明一下?我需要根據PHP的輸出做兩件不同的事情。 – 2011-05-13 11:48:58

0

比方說,你有一個template.shtml文件,其中的文本@@[email protected]@。用戶調用script.php?var=1。不是該腳本加載template.shtml文件(file_get_contents)的內容並且用str_replace替換@@[email protected]@$_REQUEST['var'](在這種情況下爲1)。

然後腳本將所有這些輸出到file1.shtml。如果該文件已經存在,則使用現有文件或覆蓋該文件 - 在這種情況下恰好適用。

因此,腳本會在運行時動態創建相關的shtml文件。只需添加Header('Relocate: file1.shtml');,腳本將瀏覽器重定向到生成的文件。

這是離我所瞭解的最近距離。

+0

所以這是否意味着而不是發送用戶到page234.shtml我會發送他們到page234.php?然後打印哪些內容取決於X?如果我正在更改文件用戶的轉到PHP,那麼我不妨直接使用PHP並告訴服務器將SHTML視爲PHP。對不起,如果我的問題太混亂了 – 2011-05-13 14:18:45

+0

一個簡單的開關來包含基於變量的另一個文檔是一個簡單的PHP任務,所以到現在爲止我確定你爲什麼要使用SSI。這個答案說用戶輸入script.php?var = ** XX **。該腳本生成頁面** XX **。shtml(如果需要並重定向用戶)。通過這種方式,您可以獲得所需的page_something_.shtml文件(如果有的話),但所有文件都由單個PHP腳本控制。在這種情況下,shtml文件不應該包含PHP。如上所述,我仍然覺得你根本不需要SSI/shtml文檔。 – ZoolWay 2011-05-13 14:27:31

+0

我同意我們不應該使用SSI。這是如何完成的,我試圖實現這個新功能,但我認爲一個帶有.shtml擴展名的唯一PHP文件是最好的選擇。 Google太重要了;我們不想更改任何網址 – 2011-05-13 14:35:03

0

在.shtml頁面上執行PHP的方式是修改.htaccess文件。這個文件可能是隱藏的,所以根據你的FTP程序,你可能需要修改一些設置才能看到它。然後你只需要添加此行的.shtml:

AddType application/x-httpd-php .shtml 

如果你只在其中一個頁面上的PHP計劃,最好是設置這樣:

<Files yourpage.shtml> 
AddType application/x-httpd-php .shtml 
</Files> 

此代碼僅會在yourpage.shtml文件中創建PHP可執行文件,而不是在所有的shtml頁面上執行。

相關問題