我可能在想这个,但我有各种用户级别的网站。我想在我的网站的标题模板中创建一个特定的var(智能或PHP),然后根据这个值,在另一个页面上显示某些代码。我尝试了几种没有成功的方法。我尝试在header.php中创建一个简单的函数:
if( $user->level_info.level_name == Basic )
{
$basic_user == yes;
}
然后在video.tpl:
{if $basic_user == yes}
some code
{/if}
它不起作用。我也在smarty(header.tpl)
中尝试过它{if $user->level_info.level_name == Basic}
{assign var="basic_user" value="yes"}
{/if}
然后就像“var = xx,some code”,但老实说我甚至不记得我是怎么在video.tpl中尝试过的,但我确定这是错的。有人可以帮忙吗?我确信这很简单,但我感到困惑和沮丧。 谢谢!
我也是在video.php中试过这个:
if($user->level_info.level_name != Premium){
header("Location: nopermission.php"); exit();
}
它“有效”,但所有用户,无论是Basic还是Premium都被转发到无权限页面。我很困惑。
答案 0 :(得分:2)
为此,我有时会使用会话变量和用户角色信息。
例如:
$_SESSION['profile'] = 'Basic';
看看会话变量。 http://www.php.net/manual/en/reserved.variables.session.php
请记住在每个页面中恢复会话以访问变量。
session_start();
使用相同的代码,您可以这样做:
在header.php中:
if($user->level_info.level_name == Basic){
session_start();
$_SESSION['profile'] = 'Basic';
}
然后在video.tpl:
session_start();
if ($_SESSION['profile']=='Basic'){
//some code
}
答案 1 :(得分:0)
您可以使用会话或 Cookie
会话
的 page1.php中强>
< ?PHP
在session_start();
//存储会话数据
的 $ _ SESSION [ 'USER_TYPE'] = '基本'; 强>
?>
page1.php
< ?PHP
在session_start();
if( isset($ SESSION ['user_type']))//检查会话变量是否已设置
{
$ user = $ SESSION ['user_type'];
//这里你可以比较变量可能持有的所有可能值 如果($用户== '基本')
...
否则如果($ user =='Admin')
...
}
?>
饼干
的 page1.php中强>
< ?PHP
$ =到期时间()+ 60 * 60 * 24 * 30;
setcookie(“user_type”,“Basic”,$ expire);
?>
<强>使page2.php 强>
&LT; ?PHP
if( isset($ _ COOKIE [“user_type”]))
{
//在此处查看可能的值,如上所示
}
?&GT;
你可以任何一个, 但请参阅此another question here on SO
主要区别在于安全性,因为如果您直接使用cookie,客户端可以自己查看和/或编辑它们,但对于会话,数据存储在服务器端,因此客户端无法直接访问。
因此,如果数据仅持续该会话,我更喜欢使用会话。
答案 2 :(得分:0)
我搞定了!只需要在video.tpl中稍微移动一段原始代码:
{if $user->level_info.level_name != Basic}
...
{/if}
不确定为什么它在那里工作而不是更进一步,但我测试了它,它完全符合我的需要。非常感谢所有回复的人!