【发布时间】:2014-05-26 14:34:51
【问题描述】:
对 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 'logedin'。如果不是隐藏的。
我为此使用了 2 种 css 样式。
.show{
display: block;
}
.hide{
display: none;
}
我想要做的是保存 (isset($_SESSION['sess_user_id'])) 吗? '显示隐藏';作为变量,我可以将其分配为占位符。
类似这样的东西(但这显然不起作用,因此我问这个问题)
$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>
因此,如果用户已登录,则隐藏 'topmenu' div 并显示 'welcome' div,反之亦然。
我希望我已经解释得很好,并感谢任何帮助
谢谢 李
【问题讨论】:
-
您可以添加一个名为“onlinestatus”(或类似名称)的列(到包含用户信息的任何表,例如用户名和 login_id 等)。当用户登录时,'onlinestatus' 设置为 'online',然后根据此设置你的 css 类或内联样式(类似地,当用户注销时,将 onlinestatus 设置为 'offline')
-
@TheOneandOnlyChemistryBlob - 当用户没有注销并且会话结束时会发生什么?
-
对不起...没看到 Javascript 不是标签。使用 Javascript 我会设置 x 分钟的不活动超时 --> 自动注销
标签: php session session-variables