2014-09-01 85 views
0

我已经设置了一个PHP会话来捕获在URL中传递给该网站的CAMPAIGN和CLICKID变量,即domain.com/index.php? & clickid = test1 & campaign = test1。我用下面的代码实现这个功能:跨多个页面存储PHP会话

<?php 
session_start(); 
$_SESSION["campaign"] = $_GET['campaign']; 
$_SESSION["clickid"] = $_GET['clickid']; 
?> 

然后我把这个传给外部链接中的第三方,例如test.php? & clickid = & campaign =。

但是,我似乎无法做的是在整个域中共享此SESSION。如果你登陆页面A并点击链接,这个脚本就可以工作,但是我希望能够做的是用户点击链接,访问页面X和页面Y,返回页面A并且变量仍然存储。

任何人都可以帮忙吗?

+1

页面X和页面Y在同一个域上吗? – 2014-09-01 12:36:38

+0

在你的每一页检查'isset($ _ GET ['campaign'])'和'isset($ _ GET ['clickid'])''。如果未设置,则将其附加到当前网址并重定向到新创建的网址 – 2014-09-01 12:38:10

回答

1

看来你覆盖了你的变量 - 如果没有get参数。

你只能写会话是否存在参数:

<?php 
session_start(); 

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


?> 
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']; 
?> 

我认为你的错误是错误地认为从URL中移除值(?test.php的&的clickId = &运动=),不会重置t他$_SESSION变量。 $_GET['clickid']$_GET['campaign']仍然设置!