0

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

提前致谢。

4

3 回答 3

3

如果这对任何人有帮助,这似乎对我有用:

<?php

    if (isset($_GET['campaign'])) {
        $campaign = $_GET['campaign'];
    }

    setcookie('CampaignName', $campaign);
?>

不确定这是否是正确的方法,但它在 Joomla 上对我有用。

于 2012-10-30T13:44:27.437 回答
0

是的,它应该可以工作,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

希望这可以帮助。并始终记住通过适当的验证来清理用户输入。在使用它之前。

于 2012-05-17T11:20:35.827 回答
0

既然你在使用 Joomla,为什么不使用 Joomla 框架呢?

设置:

JFactory::getSession()->set('campaign', JRequest::getVar('campaign'), $optional_namespace);

要得到:

JFactory::getSession()->get('campaign', $optional_default_value, $optional_namespace);
于 2012-05-18T00:49:50.463 回答