覆盖 joomla 会话变量以进行表单处理

Overriding joomla session variables for form handling

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

$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");

请帮我解决这个问题

我从 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' );

而且你的session数据默认保存在数据库中,除非你在全局配置区改成文件。所以#__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);