将用户会话保存为变量


save user session as a variable

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'。

我用了两种CSS样式。

.show{
 display: block;
}
.hide{
 display: none;
}

我想做的是保存(isset($_SESSION['sess_user_id'])) ?'show': 'hide';作为一个变量,我可以赋值为占位符。

类似这样的东西(但这显然不起作用,因此我问这个问题)

$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,反之亦然。

我希望我已经把每件事都解释清楚了,谢谢你的帮助

谢谢李

您可以这样分配它们:

$tpl->replace( '[%CLASSSHOW%]', $sessionclassshow);
$tpl->replace( '[%CLASSHIDE%]', $sessionclasshide);

但是在模板中,当你应该使用%CLASSXXXX%时,你使用了%SESSIONXXXX%(就像在它们的声明中一样)。

这个应该可以工作:

<div id="topmenu" class="[%CLASSHIDE%]"><a href="login.html">Login</a></div>
<div id="welcome" class="[%CLASSSHOW%]">welcome [%USER%]</div>