我在x-cart中面临问题, 我正在尝试在x-cart中创建会话和存储值 为此,我用了
x_session_register('subscription');
及其中的简单变量
$rs=1;
if($rs==1)
{
$subscription=1;
}
else
{
$subscription=0;
}
之后在tpl文件中使用了一些代码,如
{$smarty.session.subscription}
但没有任何事情发生 我也试过了
{php}{/php}
$_SESSION[''];
但是无法帮助我,我无法理解这是怎么回事 有不同的文件和模板,文件路径也不同 尝试在login.php中创建会话,并希望在head.tpl文件中 请帮助我。提前谢谢
答案 0 :(得分:2)
下面是一些与会话变量相关的注释,关于x-cart 4.4.x分支。
使用x_session_register()
函数,每个变量都可以插入$XCART_SESSION_VARS
数组中,因此,
x_session_save()
函数,会话变量数组保存在数据库中。
xcart中的会话数据保存在xcart_session_data
表中,主键使用每个访问者的会话ID值('sessid'列),所有数据都以序列化格式保存在'data'列中。
示例摘录:
if ($some_var == "Y"){
x_session_register("my_var");
$my_var="true";
x_session_save();
}
if($XCART_SESSION_VARS['my_var '] =="true")
$smarty->assign("my_var", $my_var);
如果$XCART_SESSION_VARS
变量不在范围内,我们将其声明为全局并检索它。
答案 1 :(得分:1)
在php文件中,
if ($var1){
x_session_register("my_var");
$my_var="content";
x_session_save();
}
if($XCART_SESSION_VARS['my_var'] !=""){
$smarty->assign("my_var", $XCART_SESSION_VARS['my_var']);
x_session_unregister("my_var");
}
在tpl文件中,
{if $my_var}
{$my_var}
{/if}
答案 2 :(得分:0)
// Try this in you php
$smarty->assign('session',$_SESSION);
// OR in tpl
/*
{$session|print_r} // for above assignment
// OR
{php}
print_r($_SESSION);
{/php}
// OR
{$smarty.session.*}
*/
答案 3 :(得分:0)
您应首先检查$_SESSION
中是否有任何变量。运行PHP(不在Smarty中)var_dump($_SESSION)
以确保其中有任何变量
我查看了文档,似乎x-cart没有按照您的想法存储会话变量(因此$_SESSION
中不会有变量)。它不会在$_SESSION
中存储会话,而是以某些自定义方式存储会话。您可以查看http://kb.x-cart.com/display/XDD/Sessions+management
由于当您尝试在Smarty中使用$_SESSION
时,$_SESSION
中没有数据,因此无效。您需要使用x-cart方法获取会话变量,然后将它们分配给Smarty