从 Joomla 中的 URL 捕获会话 ID


Capturing Session ID from URL in Joomla

我正在尝试从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);