Php 从Joomla中的URL捕获会话ID

Php 从Joomla中的URL捕获会话ID,php,joomla,Php,Joomla,我正在尝试从URL捕获会话ID,以便该ID将跟随整个站点的用户,然后在用户填写表单时被捕获 URL看起来像这样 然后,我将此代码插入Joomla模板文件的顶部: session_start(); $_SESSION['campaign']=$_GET['campaign']; 这会捕获会话(_campaign_name)吗?如果我知道Joomla使用自己的会话ID,这会对Joomla起作用吗 当我检查会话时,我只会得到一个显示会话的PHPSESSID 提前感谢。是的,它应该可以工作,joom

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

URL看起来像这样

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

session_start();
$_SESSION['campaign']=$_GET['campaign'];
这会捕获会话(_campaign_name)吗?如果我知道Joomla使用自己的会话ID,这会对Joomla起作用吗

当我检查会话时,我只会得到一个显示会话的PHPSESSID


提前感谢。

是的,它应该可以工作,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');
获取会话变量的步骤

$session =& JFactory::getSession();
$session->set('campaign', $_GET['campaign']);
$session =& JFactory::getSession();
echo $session->get('campaign');
由于某种安全原因,joomla在初始化时似乎会破坏常规会话变量,他们说,下面是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');
获取会话变量的步骤

$session =& JFactory::getSession();
$session->set('campaign', $_GET['campaign']);
$session =& JFactory::getSession();
echo $session->get('campaign');
由于某种安全原因,joomla在初始化时似乎会破坏常规会话变量,他们说,下面是joomla文档中的链接,以帮助您


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

既然您正在使用Joomla,为什么不使用Joomla框架呢

设置:

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

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

既然您正在使用Joomla,为什么不使用Joomla框架呢

设置:

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

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

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

<?php

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

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


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

这似乎对我有效,如果这对任何人都有帮助的话:

<?php

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

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


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

当我尝试这样做时,我得到的只是数组(0){}。所以我的代码没有从URL捕获会话?还是不储存?嗨,易卜拉欣,非常感谢你的帮助!我只是不知道如何在访问外部脚本设置的变量时实现doc。JPATH_BASE需要反映我的目录结构?很抱歉,我不是joomla开发人员,而且这只是供参考的,我想您只需要这三行代码来设置和获取会话变量
$session=&JFactory::getSession()$会话->设置('campaign',$_GET['campaign'])$会话->获取(“活动”)好的,非常感谢。我确实有三行,但它似乎没有得到变量。我要看看我是否能解决一些问题。谢谢当我尝试这样做时,我得到的只是数组(0){},所以我的代码没有从URL捕获会话?还是不储存?嗨,易卜拉欣,非常感谢你的帮助!我只是不知道如何在访问外部脚本设置的变量时实现doc。JPATH_BASE需要反映我的目录结构?很抱歉,我不是joomla开发人员,而且这只是供参考的,我想您只需要这三行代码来设置和获取会话变量
$session=&JFactory::getSession()$会话->设置('campaign',$_GET['campaign'])$会话->获取(“活动”)好的,非常感谢。我确实有三行,但它似乎没有得到变量。我要看看我是否能解决一些问题。谢谢谢谢你的回复,我已经试过了,那里也不走运。我想知道这个站点中是否有什么东西阻止了会话被捕获。您的用户是否在任何时候登录我们的注销?当这些操作发生时,将生成一个新会话,因此您可能会以这种方式丢失会话数据。可能吗?您可能还需要在Joomla admin中检查会话设置。生命周期设置为什么?您是否使用DB进行会话存储?谢谢您的回复,我已经尝试过了,也没有运气。我想知道这个站点中是否有什么东西阻止了会话被捕获。您的用户是否在任何时候登录我们的注销?当这些操作发生时,将生成一个新会话,因此您可能会以这种方式丢失会话数据。可能吗?您可能还需要在Joomla admin中检查会话设置。生命周期设置为什么?您是否使用DB进行会话存储?