【发布时间】:2013-04-20 20:52:06
【问题描述】:
我有两个标题:一个为登录用户显示,一个在注销/非会员时显示。我还有一个页脚,应该在每个页面上重复。我的想法是使用 SSI 来包含页眉和页脚。
到目前为止,我们还没有开始太多的服务器端处理,因此不会跟踪登录/注销的用户。因此,目前,我只想使用包含标题的页面来确定要显示的页面。我的想法是使用 PHP 文件而不是 SHTML 文件作为标头,因此我可以进行一些处理以确定要显示的标头。
那么是否可以通过 PHP 确定哪个页面正在调用包含?
我做错了吗?如果是这样,哪种解决方案更合适?
例如,每个 html 页面都适合这种一般布局:
<html>
<header>
<!-- relevant header calls -->
<header>
<body>
<div id="body">
<!--#include virtual="header.php"-->
<!-- actual page content -->
</div>
<!--#include virtual="footer.shtml"-->
</body>
</html>
在 header.php 中我想要类似的东西:
<?php
if(/*page is a non-logged in page*/){
echo(/*logged out header*/);
} else {
echo(/*logged in header*/);
}
?>
【问题讨论】:
-
if($_SESSION['logged_in']) 包括('logged_in_header.php');否则包括('visitor_header.php');
-
这对 SSI 也有效吗?我有点担心,作为服务器端,它会掩盖会话。另外,我现在主要关心的是检测哪个页面正在调用包含。
-
没有一些代码很难说,但你看过:en.wikipedia.org/wiki/Server_Side_Includes
-
使用 SSI 的原因是什么?
-
@AbsoluteƵERØ 似乎是在多个位置包含一段 html 代码的正确方法。它非常适合页脚,并且确实加快了更新速度。但就像我说的,我不能 100% 确定这是我想要的解决方案。最后,当我只是使用会话来确定哪个标题时,这似乎很简单,但是为了测试,我想使用页面来确定哪个标题,而无需手动编辑每个页面,因为我更改了哪些页面显示了什么。