2015-04-01 97 views
1

我有一個php會話變量,我更新它在一個頁面,並訪問它在不同的頁面,當變量達到一個閾值我重置爲零,並根據上傳的文件數量增加它。php會話變量不更新

問題是,當我重置並重新加載頁面時,它達到了閾值,我訪問會話變量不更新的文件,並顯示零,雖然文件上傳。

但實際上,會話變量正在另一頁中遞增。它只顯示兩次重新加載後的實際值(增加的值)。

我想知道它爲什麼會發生。

+8

請告訴我們你的代碼。 – Albzi 2015-04-01 10:15:39

+1

沒有任何人都可以說的任何代碼是「你做它rong」:| – CD001 2015-04-01 10:16:03

回答

1

首先,顯示你的問題的代碼是至關重要的,但是對於這個特定問題,問題是你在你更新它們的文件中正確使用sessionvariables。會話在頁面中的任何內容之前加載,所以當你更新它們時,它們已經被加載,儘管它們已經改變,但它們的值在當前頁面中仍然是相同的。 爲了防止這種情況,你需要或者轉到另一個頁面更新會議結束後或將重定向你會改變聲明後,如果有必要留在同一個地址,就像這樣:

<?php 
if(threshold){ 
$_SESSION['your_session']='your new value'; 
header('LOCATION sample.php'); 
} 
?> 
+0

無論如何,你是正確的,雖然我沒有更新它,因爲在我訪問它的同一個文件中,問題是會話變量首先被加載,並且我無法獲得更新後的值而沒有重新加載它。所以我從一個PHP文件返回會話變量並通過ajax請求訪問它,所以對我來說工作得很好。謝謝你,因爲你給我的想法是,服務器代碼首先加載,並在客戶端,我不能直接得到更新的值。 – 2015-04-09 10:13:00