将用户会话保存为变量

时间:2014-05-26 14:34:52

标签: php session session-variables

非常新的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,反之亦然。

我希望我已经很好地解释了所有内容并感谢任何帮助

感谢 利

1 个答案:

答案 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>