覆盖表单处理的joomla会话变量

时间:2016-05-19 14:01:19

标签: session joomla session-variables payment-gateway

我有一个有过多主题的joomla网站。这是我遇到问题的网站的链接。 http://miraghotels.com/joomjob/membership/planadd?step=2 此链接上的表单在某处处理,引用表单字段及其值的变量数组存储在Joomla会话中。问题是我想要更改/覆盖实际在会话的数组变量中的参数的值。为了解释这一点,我附上了这段代码。

$planChosen = $session->get('planChosen', 0, 'register');

首先,此会话的语法是什么?我从

获得了不同的输出
$session->get('planChosen').

现在好了,当我输出这个变量($ planChosen)时,我得到以下输出:

Array ( [planname3] => Basic 
[planperiod3] => 15 Days 
[plancredit3] => 5 
[price3] => 0 
[plan_id] => 4
[planname4] => Premium 
[planperiod4] => 3 Months 
[plancredit4] => 25 
[price4] => 50 
[gateway] => paypal 
[option] => com_joomjob 
[task] => guest.grabplaninfo 
[2d13d7c9e4ffff248cf29092b199f5b2] => 1 )

现在我想知道的是这个会话存储在哪里,即在哪里可以找到会话中处理这些项目的文件。 其次,如果我想覆盖例如一个值,例如改变" gateway"的价值来自" paypal"对于" moneybookers",我怎样才能做到这一点?我尝试了以下代码,但没有运气:

$string="('planChosen', 0, 'register')[\"gateway\"]";
$session->set($string, "moneybookers");

请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

我是从Joomla.org网站上得到的 以下代码获取当前会话,然后将会话变量'myvar'的值设置为'helloworld'。

$session =& JFactory::getSession();
$session->set( 'myvar', 'helloworld' );

稍后可以以类似的方式检索会话变量。

$session =& JFactory::getSession();
echo 'Session variable myvar has value: ' . $session->get( 'myvar', 'empty' );

因此,如果您使用此代码将paypal设置为支付网关

$session->set( 'gateway', 'paypal' );

现在,如果你想要moneybookers,你可以通过

覆盖paypal
$session->clear('gateway');
$session->set( 'gateway', 'moneybookers' );

默认情况下,您的会话数据会保存在数据库中,除非您将其更改为全局配置区域中的文件。所以#__sessions拥有你所有的会话数据。

编辑: 在这种情况下,你可以这样做

$session =& JFactory::getSession();
$session->set( 'planChosen', $planChosen );//store array in session  variable
//Now you have entire array in this session variable which contains paypal as payment gateway
// Suppose you want to update it then use the code below 
$session =& JFactory::getSession();
$planChosen = $session->get( 'planChosen' );
unset($planChosen[$gateway]);
$planChosen["gateway"] = "moneybookers";
$session->set('planChosen',$planChosen);