覆盖 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);
我有一个主题过多的 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);