我有一个有过多主题的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");
请帮我解决这个问题
答案 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);