当用户已登录时,我想在页面
中显示一些链接<{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 !!!
答案 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页。