Php 如何在我的站点上创建一个var,然后在另一个页面上显示基于该var的内容?
我可能想得太多了,但我有不同用户级别的网站。我想在我的站点的标题模板中创建一个特定的var(smarty或PHP),然后根据这个值,在另一个页面上显示某些代码。我尝试过几种方法,但都没有成功。我尝试在header.php中创建一个简单函数:Php 如何在我的站点上创建一个var,然后在另一个页面上显示基于该var的内容?,php,html,smarty,var,Php,Html,Smarty,Var,我可能想得太多了,但我有不同用户级别的网站。我想在我的站点的标题模板中创建一个特定的var(smarty或PHP),然后根据这个值,在另一个页面上显示某些代码。我尝试过几种方法,但都没有成功。我尝试在header.php中创建一个简单函数: if( $user->level_info.level_name == Basic ) { $basic_user == yes; } if($user->level_info.level_name == Basic){
if( $user->level_info.level_name == Basic )
{
$basic_user == yes;
}
if($user->level_info.level_name == Basic){
session_start();
$_SESSION['profile'] = 'Basic';
}
然后在video.tpl中:
{if $basic_user == yes}
some code
{/if}
session_start();
if ($_SESSION['profile']=='Basic'){
//some code
}
{if $user->level_info.level_name != Basic}
...
{/if}
它不起作用。我也在smarty(header.tpl)中试用过
然后类似于“var=xx,一些代码”,但老实说,我甚至不记得我是如何在video.tpl中尝试的,但我肯定这是错误的。有人能帮忙吗?我相信这很简单,但我被困住了,很沮丧。
谢谢
我也在video.php中尝试过:
if($user->level_info.level_name != Premium){
header("Location: nopermission.php"); exit();
}
它“有效”,但所有用户,无论是基本用户还是高级用户,都会被转发到无权限页面。我很困惑。为此,我有时会使用会话变量和用户角色信息 例如:
$_SESSION['profile'] = 'Basic';
查看会话变量。
记住在每个页面中恢复会话,以便访问变量
session_start();
使用相同的代码,可以执行以下操作:
在header.php中:
if( $user->level_info.level_name == Basic )
{
$basic_user == yes;
}
if($user->level_info.level_name == Basic){
session_start();
$_SESSION['profile'] = 'Basic';
}
然后在video.tpl中:
{if $basic_user == yes}
some code
{/if}
session_start();
if ($_SESSION['profile']=='Basic'){
//some code
}
{if $user->level_info.level_name != Basic}
...
{/if}
您可以使用会话或cookies
- 会话
page1.php
<?php
会话_start()
//存储会话数据
$\u会话['user\u type']='basic'
?> page1.php
<?php
会话_start()
if(isset($SESSION['user\u type']))//检查会话变量是否已设置
{
$user=$SESSION['user_type'];
//在这里,您可以比较变量可能持有的所有可能值
如果($user=='Basic')
…
else if($user=='Admin')
…
}
?> - 饼干
page1.php
<?php
$expire=time()+60*60*24*30
setcookie(“用户类型”、“基本”和$expire)
?>
page2.php
<?php
如果(isset($\u COOKIE[“用户类型”]))
{
//在此处检查可能的值,如上图所示
}
?>
我让它工作了!只需在video.tpl中将我的原始代码的一个版本向下移动一点:
{if $basic_user == yes}
some code
{/if}
session_start();
if ($_SESSION['profile']=='Basic'){
//some code
}
{if $user->level_info.level_name != Basic}
...
{/if}
我不知道为什么它在那里工作,而且没有进一步的改进,但我测试了它,它完全满足了我的需要。非常感谢所有回复的人 您有
$basic\u user==yes代码>。它应该是$basic\u user=yes代码>查看使用POST或GET传递此变量。然后在php中编写一个条件if来检查POST/GET数据。我删除了额外的=并再次尝试,但没有成功。我不知道如何使用POST或GET…它不起作用。我不明白。我最初的条件if/else语句在其他地方可以使用,但在video.tpl/video.php中没有任何功能。我已经尝试了这里显示的所有方法。根据PHP文档$\u SESSION“是一个‘超全局’变量,或自动全局变量。这意味着它在整个脚本的所有范围内都可用”。您必须深入研究您的代码,因为您的问题似乎存在于其他地方。我认为您无法从那里访问$user对象。在处理模板文件时,必须确保smarty如何处理它们,因为它们不是作为php文件处理的。抱歉,我从未与smarty合作过,因此我无法在该主题上进一步帮助您。在Google中查找它时,我发现您可以使用特定语法将变量传递给模板:但这可能还不够,因为您希望向每个用户显示不同的视图。我建议为每个用户和控件使用从控制器渲染的视图(模板)。看看这个:会话方法根本不起作用。非常困惑:(@zoldos请说得更具体些,什么不起作用?是否出现了一些错误/异常?尝试回显$SESSION['user\u type']刚设置完,然后从该页面调用第二个页面,启动新会话,然后在那里回显。如果仍然不起作用,我建议创建两个空文件,然后再试一次,以保持简单。