2013-06-19 50 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