我已经设置了一个PHP会话来捕获在URL中传递给站点的CAMPAIGN和CLICKID变量 - 即domain.com/index.php?&clickid=test1&campaign=test1。我使用下面的代码实现了这个目标:
<?php
session_start();
$_SESSION["campaign"] = $_GET['campaign'];
$_SESSION["clickid"] = $_GET['clickid'];
?>
然后我将其传递给外部链接中的第三方,例如test.php?&amp; clickid =&amp; campaign =。
然而,似乎无法做到的是在整个域中共享此SESSION。如果您登陆页面A并单击链接,此脚本可以正常工作,但是我希望能够做的是用户单击链接,访问页面X和页面Y,返回页面A并且仍然存储变量。
有人可以帮忙吗?
答案 0 :(得分:1)
如果没有获取参数,您似乎正在覆盖变量。
如果参数存在,您应该只写入会话:
<?php
session_start();
if(isset($_GET['campaign'])){
$_SESSION["campaign"] = $_GET['campaign'];
}
if(isset($_GET['clickid'])){
$_SESSION["clickid"] = $_GET['clickid'];
}
?>
答案 1 :(得分:0)
请注意,$_SESSION
旨在允许您设置一次变量,并在另一个页面上访问它。我猜你在两个页面上都有相同的内容,X和Y.
如果您在页面上设置变量,则表示如下:
<?php
session_start();
$_SESSION["campaign"] = $_GET['campaign'];
$_SESSION["clickid"] = $_GET['clickid'];
?>
考虑到这一点,您需要访问在index.php
上设置的变量,如下所示:
<?php
session_start();
// Don't rewrite your variables by setting them again, they're already set!
echo $_SESSION['campaign'];
echo $_SESSION['clickid'];
?>
我认为您的错误错误地认为从网址中删除值(test.php?&amp; clickid =&amp; campaign =)不会重置$_SESSION
变量。仍然设置了 $_GET['clickid']
和$_GET['campaign']
!