跨多个页面存储PHP会话

时间:2014-09-01 12:35:05

标签: php session variables store

我已经设置了一个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并且仍然存储变量。

有人可以帮忙吗?

2 个答案:

答案 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']