如何在我的网站上创建var然后在另一个页面上显示基于该var的内容?

时间:2013-12-14 04:27:24

标签: php html smarty var

我可能在想这个,但我有各种用户级别的网站。我想在我的网站的标题模板中创建一个特定的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都被转发到无权限页面。我很困惑。

3 个答案:

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

不确定为什么它在那里工作而不是更进一步,但我测试了它,它完全符合我的需要。非常感谢所有回复的人!