我正在尝试从URL捕获会话ID,以便该ID将在整个站点中跟随用户,然后在他们填写表单时被捕获。
URL 将如下所示。
http://www.mysite.co.za/?campaign=the_campaign_name
然后我将这段代码插入到我的 Joomla 模板文件的顶部:
session_start();
$_SESSION['campaign']=$_GET['campaign'];
这会捕获会话(the_campaign_name)吗,这是否适用于 Joomla,因为我知道 Joomla 使用自己的会话 ID?
当我检查会话时,我只会得到一个显示其会话的 PHPSESSID。
提前谢谢。
这似乎对我有用,如果这对任何人有帮助:
<?php
if (isset($_GET['campaign'])) {
$campaign = $_GET['campaign'];
}
setcookie('CampaignName', $campaign);
?>
不确定这是否是正确的方法,但它对我在 Joomla 上有用。
是的,它应该可以工作,joomla 是 PHP。 而您要做的是PHP,如果要检查所有创建的会话变量,请尝试
session_start();
var_dump($_SESSION);
更新:
似乎 Joomla 将会话变量存储在数据库中,根据您需要在 Joomla 中设置和访问会话变量的文档,像这样。
设置会话变量
$session =& JFactory::getSession();
$session->set('campaign', $_GET['campaign']);
获取会话变量
$session =& JFactory::getSession();
echo $session->get('campaign');
他们说,似乎 Joomla 在初始化时会出于某种安全原因破坏常规会话变量,这是 Joomla 文档中的链接,可帮助您 http://docs.joomla.org/How_to_access_session_variables_set_by_an_external_script
希望这有帮助。 并始终记住通过适当的验证来清理用户输入。 在使用之前。
既然你正在使用Joomla,为什么不使用Joomla框架呢?
要设置:
JFactory::getSession()->set('campaign', JRequest::getVar('campaign'), $optional_namespace);
要获得:
JFactory::getSession()->get('campaign', $optional_default_value, $optional_namespace);