如何在Smarty中获得COOKIE

时间:2014-07-26 08:50:55

标签: php cookies smarty

当用户已登录时,我想在页面

中显示一些链接
<{if(!empty($_COOKIE['USER']))}>
   <a href="domain.com/page-a.html">TEXT A</a>
<{else}> <a href="domain.com/page-b.html">TEXT B</a>
<{/if}>    

但不起作用


自己找到答案,只需替换:

<{if(!empty($_COOKIE['USER']))}>

<{if $smarty.cookies.USER!=''}>

Yihaaa !!!

1 个答案:

答案 0 :(得分:2)

对我而言,这样做并不是一种好习惯。

你应该用PHP来做:

if (!empty($_COOKIE['USER'])) {
   $smarty->assign('page','a');
}
else {
   $smarty->assign('page','b');
}

然后在Smarty:

{if $page eq 'a'}
<a href="domain.com/page-a.html">TEXT A</a>
{else}
<a href="domain.com/page-b.html">TEXT B</a>
{/if}

这种态度有什么好处?在模板中,您不关心如何计算$ page。它可以通过会话或任何其他原因计算,模板只是不关心,因为它只关心$page值。如果您决定更改实现,则只需要在PHP中进行更改,而不是在PHP和Smarty中进行更改。

您还可以考虑使用$_SESSION代替$_COOKIE - 如果用户更改/设置其Cookie值,该怎么办?即使他不应该有这样的访问权限,他也可以访问第b页。