2014-09-01 97 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']仍然設置!