2013-06-19 46 views
0

我正嘗試將Webshop遷移到新的Web服務器。它在舊的Web服務器上運行得非常好,但是,當我嘗試登錄Webshop(index.html)時,它返回到主頁,因爲Session Variable爲空而未登錄。 然後我注意到,當我打開另一個名爲request.php的站點時)會話變量已設置,並且我已登錄。 所以我嘗試了幾件事,我將index.html重命名爲index.php,會話在那裏。在.html文件中缺少PHP會話

我現在的問題是:我是否也可以在.html文件中獲得會話(就像在以前的Web服務器上一樣)還是必須重命名所有的.html文件?

注意:index.html文件也包含php代碼,並且解析爲php,只是會話變量爲空。

在此先感謝您的每一個答案!

+0

似乎在舊服務器上的html文件也被配置爲php可執行文件。 – Fracsi

回答

1

,如果你使用的是Apache服務器,試試這個加到配置文件。

AddType application/x-httpd-php .html 
+0

使用html文件運行任何類型的服務器端腳本並不是最好的辦法。 如果你能夠,你應該重新命名的PHP文件,PHP的PHP文件,而不是混亂,當你需要編輯他們,因爲大多數編輯器不HTML顏色代碼的PHP文件在HTML文件。 – Droa

+0

好吧,我會重新命名我的索引。HTML並且更改該文件的所有鏈接。我仍然想知道爲什麼會話變量是空的,因爲php的解析方式與.php文件中的解析方式相同。 – user2165212

+0

由於沒有其他答案,我要把這個標記爲已解決,儘管我現在不知道它爲什麼可以用.php結尾。 – user2165212

0

您需要在您的Web服務器中設置處理程序,將html文件視爲php文件。

+0

我想這就是Droa的回答,index.html中的php代碼被成功解析。 – user2165212

0

這些文件需要重命名爲擴展名爲.php,即使它們包含html。 只需提供你的PHP代碼的HTML開始之前,像這樣:

<?php 
//code goes here 
?> 

<html> 
    <body> 
    //etc... 

這種方式,你可以加載你的會話變量,你需要的任何其他PHP變量,那麼他們將在HTML訪問以及。

如果你有幾個頁面需要相同的東西(會話變量),你可以把會話代碼放到一個php文件中,像'session.php'。 然後,在你從HTML轉換爲PHP的每一頁的頂部,把這段代碼頂部:

<?php 
    require_once("session.php"); 
?> 

現在所有的網頁將有機會獲得同樣的信息,並有助於減少代碼也一樣。

+0

在html開始之前包含php代碼正是我的index.html文件所做的。唯一的區別是文件的結尾(index.html,index.php) – user2165212

0

AddType application/x-httpd-php .html

在.htaccess文件將做的工作,我仍然認爲這是相當不安全做到這一點:)

+0

這沒有辦法,也許我不清楚,.html文件包含解析的PHP代碼。只是包含會話的變量是空的。 – user2165212

+0

你忘記了那個.html文件中的session_start()嗎? – paranoid

+0

不,index.html和request.php都包含另一個.php文件,它執行會話初始化(session_start())。如果缺少這個,它將無法在舊的Web服務器上運行。 – user2165212