从Joomla中的URL捕获会话ID

时间:2012-05-17 11:17:56

标签: php joomla

我正在尝试从网址中捕获会话ID,以便该ID将跟随整个网站中的用户,然后在填写表单时被捕获。

网址看起来像这样。

http://www.mysite.co.za/?campaign=the_campaign_name

然后我将此代码插入到我的Joomla模板文件的顶部:

session_start();
$_SESSION['campaign']=$_GET['campaign'];

这会捕获会话(the_campaign_name)并且这会与Joomla一起使用,因为我知道Joomla使用自己的会话ID吗?

当我检查会话时,我只会看到PHPSESSID显示其会话。

提前致谢。

3 个答案:

答案 0 :(得分:3)

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

<?php

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

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

不确定它是否是正确的方式,但它对Joomla来说很有用。

答案 1 :(得分: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

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

答案 2 :(得分:0)

由于您使用Joomla,为什么不使用Joomla框架?

设置:

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

获得:

JFactory::getSession()->get('campaign', $optional_default_value, $optional_namespace);