2011-08-29 28 views
0

我在頁面1上的一系列頁面並將一些數據保存到會話中。我現在單擊第1頁上的鏈接並轉到第2頁。我再次將一些數據保存到相同的Session變量中。我多次將這些數據保存到同一個Session變量中。我現在點擊後退按鈕幾次返回到系列中的上一頁。會話變量中將存在哪些數據?從系列的最後一頁保存的數據或我現在坐在使用後退按鈕的頁面中的數據。會話變量內容和後退按鈕

+0

您正在使用哪種語言?向我們顯示您的代碼 – JMax

回答

2

保存到會話中的所有數據都保留在會話變量中,直到您將其刪除或會話過期。會話中的Back/forward/etc不會影響會話變量的內容 - 除非加載頁面,您將更改這些變量的內容。

+0

以下評論不正確。通過後退按鈕訪問的頁面將顯示當時捕獲的SESSION變量信息。作爲一名Coldfusion開發人員,我可以證實這一點。 Mobile Safari是唯一的例外,它充當下面的評論。按下後退按鈕時,大多數瀏覽器都不會返回服務器(從緩存中檢索數據)。移動Safari不遵守這個範例。我目前正試圖找到解決方法。我會讓你知道,如果我找到解決方案... –

0

我假設你在談論PHP--如果是這樣,那麼保存在$ _SESSION中的數據在按下不同頁面時不會改變,因爲會話數據保存在服務器上。 簡而言之:無論導航如何,您都將始終保留上次保存的會話數據。

1

試一試:(假設你使用PHP)

page1.php中:

<?php 
session_start(); 
$_SESSION['page1'] = 'from page1'; 

var_dump($_SESSION['page1']); 
var_dump($_SESSION['page2']); 
?> 
<br /><a href="page2.php">page 2</a> 

使page2.php:

<?php 
session_start(); 
$_SESSION['page2'] = 'from page2'; 

var_dump($_SESSION['page1']); 
var_dump($_SESSION['page2']); 

轉到第1頁,點擊鏈接到page2,點擊返回。 您會看到$_SESSION['page2']的值仍然具有您設置的值。

0

會話變量中將存在哪些數據?

無論您將數據放在那裏,直到覆蓋它(或刪除它)或會話過期。無論用戶使用瀏覽器做什麼或者他們如何從一個頁面移動到另一個頁面,會話都不受用戶/瀏覽器的控制。它由您的服務器端代碼控制。

如果用戶在執行完頁面請求後執行請求,那麼會話值將發生什麼變化完全取決於您。如果您的代碼假設用戶來自頁面3並更新會話值以指示在頁面4上,則會話值將被更新。如果您的代碼檢查會話值中以後的狀態並保留該狀態,則會話值不會更新。

這完全取決於你如何使它工作。