我正在尝试从网址中捕获会话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显示其会话。
提前致谢。
答案 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);