PHP$_SESSIONS是否适用于包含的页面



假设我有header.tpl和footer.tpl,介于两者之间的是body.tpl。

假设我想通过检查是否设置了特定会话来限制对body.tpl的访问,比如:

session_start();
if (isset($_SESSION['limited'])) {
  //render body.tpl
} else {
  //direct somewhere else
}

如果session_start(); if (isset()) {部分位于header.tpl中,而} else {}位于footer.tpl文件中,这会起作用吗?

我的计划是在每个页面中包含的页眉和页脚中进行会话检查,这样我就不必在呈现模板的PHP文件中这样做了。

像这样(body.tpl的内容(:

<?php require_once(TEMPLATE_PATH. "/header.tpl"); ?>
//body.tpl contents
<?php require_once(TEMPLATE_PATH. "/footer.tpl"); ?>

body.tpl通过一个PHP文件调用,该文件requires所有必要的文件并实例化将用于填充tpl文件的所有类。如果我在PHP文件中进行会话检查,它将按预期工作。

您可以在执行请求时从任何PHP代码访问$_SESSION对象。请确保只调用session_start一次。

ps。这种方法会带来代码重复,你会后悔的。

如果使用模板引擎,效果会更好(请尝试http://www.smarty.net/)

你将能够轻松地完成这项任务以及更多任务。你将能够沿着这些路线做一些事情。

假设您想要显示一个页面foo.tpl,并且您有另外两个smarty模板1.header.tpl2英尺.tpl

foo.tpl看起来像这个

{include file="header.tpl"}
{$foo}
{include file="footer.tpl"}

然后在php页面中,执行您想要的任何逻辑,通过将输出加载到变量中

$smarty-assign('foo',$my_content);
$smarty->display( "foo.tpl" );

这将呈现foo.tpl,包括header.tpl和footer.tpl的内容以及$foo

最新更新