非常新的PHP所以忍受我。
我正在使用一个简单的模板系统,我将变量设置为[%PLACEHOLDER%],然后在我使用与之关联的[%TAG%]时输出模板页面上变量中存储的数据。
我这样做是因为我喜欢将所有的php和html分开,以便在用户知道php的情况下创建不同的主题和模板更容易。
一个简单的例子是:
(object) $tpl = new Tmpl( array( 'file' => 'templates/header.tpl' ) );
$tpl->replace( '[%USER%]', $user);
echo $tpl->output();
现在一切正常。我想要做的是将用户会话保存为变量,以便为其分配占位符标记。
我在php页面中使用以下代码
<div id="logedin" class="<?php echo (isset($_SESSION['sess_user_id'])) ? 'show' : 'hide'; ?>">
Welcome, <?php echo $_SESSION["sess_username"] ?>
基本上如果用户登录了div id&#39; logedin&#39;显示。如果不是它的隐藏。
我使用了2种css样式。
.show{
display: block;
}
.hide{
display: none;
}
我想要做的是保存(isset($ _ SESSION [&#39; sess_user_id&#39;]))? &#39;秀&#39; :&#39;隐藏&#39 ;;作为变量,我可以将其指定为占位符。
像这样的东西(但这显然不起作用因此我问这个问题)$sessionclassshow = (isset($_SESSION['sess_user_id'])) ? 'show' : 'hide';
$sessionclasshide = (isset($_SESSION['sess_user_id'])) ? 'hide' : 'show';
然后我将它们分配为像这样的占位符
$tpl->replace( '[%CLASSSHOW%]', $sessionclassshow);
$tpl->replace( '[%CLASSHIDE%]', $sessionclasshide);
所以我的模板文件中的任何地方都可以显示或隐藏div,这取决于用户是否被插入。
<div id="topmenu" class="[%SESSIONHIDE%]"><a href="login.html">Login</a></div>
<div id="welcome" class="[%SESSIONSHOW%]">welcome [%USER%]</div>
因此,如果用户已登录,则隐藏&#39; topmenu&#39; div并表示欢迎&#39; div,反之亦然。
我希望我已经很好地解释了所有内容并感谢任何帮助
感谢 利
答案 0 :(得分:1)
你这样分配:
$tpl->replace( '[%CLASSSHOW%]', $sessionclassshow);
$tpl->replace( '[%CLASSHIDE%]', $sessionclasshide);
但是在模板中,当您使用%SESSIONXXXX%
时(如在声明中),您可以使用%CLASSXXXX%
来使用它们。
这应该有效:
<div id="topmenu" class="[%CLASSHIDE%]"><a href="login.html">Login</a></div>
<div id="welcome" class="[%CLASSSHOW%]">welcome [%USER%]</div>