假设我有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"); ?>
通过PHP文件调用body.tpl requires
所有必需的文件,并实例化用于填写tpl文件的所有类。如果我在PHP文件中进行会话检查,它就会按预期工作。
答案 0 :(得分:0)
您可以在执行请求时从任何PHP代码访问$ _SESSION对象。确保只调用一次session_start。
PS。这种方法会带来代码重复,你会后悔的。
答案 1 :(得分:0)
如果您使用模板引擎(尝试http://www.smarty.net/)
,您会做得更好你可以轻松地完成这项工作。你将能够沿着这些方向做点什么。
假设您要显示页面foo.tpl,您还有两个其他智能模板 header.tpl 2. footer.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