2011-05-03 94 views
2

我在做一個應用程序,我需要保存數據的歸屬會話和餅乾來處理數據

我的一個朋友建議我說,我可以用會話和餅乾做到這一點,但我沒有在正確的引導我怎麼能實現它。

這是我所知道的。

會有隸屬關係代碼爲每個產品 當訪問者點擊隸屬關係代碼,我將創建在服務器端的會話 我會使用Cookie保存在客戶端的會話ID,使從屬關係可以被記錄爲未來的訪問。

有兩個問題

  1. 我如何保存會話ID:在餅乾嗎?我如何獲得會話ID?
  2. 我認爲一旦用戶/訪問者關閉瀏覽器會話就會被破壞,對嗎?如何在更長的時間內保存會話,直到我設置cookie過期爲止?
+0

恐怕這個建議是錯誤的,會話不是長期存儲數據的工具。 – 2011-05-03 01:54:55

+0

正確,它們不適合長期存放。但是,它們可以用來將訪問者鏈接到OP正在嘗試執行的數據庫記錄。這是簡單的訪客跟蹤... – lucifurious 2011-05-03 02:02:13

+0

我的意思是「長時間」而不是「長期」。他的描述聽起來像是他想要持續數天或數週的數據,而不是會話的用例。 – 2011-05-03 02:26:25

回答

0

將您的Cookie過期設置爲將來的某個時間,然後在用戶訪問您的網站時跟蹤客戶端。如果他們清除他們的cookies,這種方法將會中斷。

另一種選擇是匹配用戶代理字符串和IP地址。這不是100%準確,但會讓你接近。

最好的選擇,恕我直言,是要求爲用戶註冊。這樣,您可以確認他們的身份,並在登錄時繼續跟蹤他們。

0

在PHP中,你可以通過調用

$_currentSessionId = session_id() 

將其寫入到一個cookie獲取當前會話ID,只要做到以下幾點:

$_expires = 0; 
setcookie('YOUR_SID', $_currentSessionId, $_expires); 

返回時,拉SID從曲奇:

if (isset($_SESSION['YOUR_SID'])) { 
    $_currentSessionId = $_SESSION['YOUR_SID']; 
    // Do your thing... 
} 

如果您通過$ _expires of 0 setcookie它將是一個基於會話的cookie,或者在用戶關閉瀏覽器時被銷燬。如果將$ _expires設置爲較大的值,它將在稍後過期(應該是從現在開始的秒數)。

我見過的人使用:

$_expires = pow(2,31)-1; 

了很長一段持久的cookie。