2010-06-16 34 views

回答

2

你可以使用這個會話變量解決。這樣數據不會被覆蓋。這裏有一個例子:

$_SESSION['formdata'][] = $_POST['value1']; 
$_SESSION['formdata'][] = $_POST['value2']; 

後重新加載腳本中的數據仍然可用的推動其它值到數組不會覆蓋舊的。你只是再次做:

$_SESSION['formdata'][] = $_POST['value3']; 
$_SESSION['formdata'][] = $_POST['value4']; 

調用$ _SESSION ['formdata'] - 數組,你現在有所有4值存儲在那裏。

**編輯** 我終於回家了,正如我們已經討論過的那樣,我會提供另一種使用cookie的解決方案,因爲會話不適合您。所以我們走吧...

首先,我們需要考慮我們想要命名cookie的方式。我建議我們通過IP地址和任何後綴來做到這一點,以確保它確實是已經填充的用戶,前者的形式。

因此,我們可以這樣的:

$dataArray[] = $_POST['value1']; 
$dataArray[] = $_POST['value2']; 

然後,我們需要將數據存儲到cookie中。我們通過序列化數組來完成此操作,因爲我們不想保存數百個Cookie。這將工作是這樣的:

$cookievalue = serialize($dataArray); 

// Here we actually generate a cookiename in the format of "IP_formdata" 
setcookie($_SERVER['REMOTE_ADDR'] . '_formdata', $cookievalue); 

到目前爲止好。在接下來的形式,我們獲取的cookie數據和反序列化數據,所以我們可以延長這個數組:

$dataArray = unserialize($_COOKIE[$_SERVER['REMOTE_ADDR'] . '_formdata'); 

現在,我們可以將其他值到數組從第二個窗體添加:

$dataArray[] = $_POST['value3']; 
$dataArray[] = $_POST['value4']; 

畢竟附加價值已經投入到這個陣列我們再次序列化並再次將其重新存儲到:

$cookievalue = serialize($dataArray); 
setcookie($_SERVER['REMOTE_ADDR'] . '_formdata', $cookievalue); 

現在我們可以重複這個步驟,所有進一步的形式。請記住,如果你想處理數據,你首先必須對數據進行反序列化並將其存儲到數組中。

不要忘記,因爲我已經在評論中指出:用戶可以關閉cookie,那麼整個事情將無法正常工作。您還可以添加一些額外的檢查來驗證這是否是正確的用戶或某事。我沒有測試代碼,但我認爲它應該以這樣的方式工作,我希望我可以幫助你,或者至少給你一個提示:)

+0

那是什麼我正在做...但它不工作 – 2010-06-16 12:03:57

+0

檢查你是否無意中寫了一行'$ _SESSION ['formdata'] [] = array();'代碼中的任何地方。如果是這樣,那麼數組將被清除。只要刪除一條這樣的線。 當你運行這個時會發生什麼: echo'

'; print_r($_SESSION['formdata']); echo '
'; – 2010-06-16 12:23:39

+0

它向我輸出一個最後提交時插入的值 – 2010-06-16 12:26:57

3

在PHP:

$arr[] = value; 
$arr[] = other value; 

在HTML:

<input type="text" name="arr[]" /> 
<input type="text" name="arr[]" /> 
+0

但是,這個替換我最後插入的值在數組 – 2010-06-16 11:55:26

+2

不,它沒有。 – 2010-06-16 11:56:00

+0

我有一個$ _SESSION ['bannersize'] []數組,每次提交表單時應該將數值$ _POST ['bannersize']與前面的值一起追加到數組中,但是這不會發生,每個新值都會重寫最後一個值導致我在第0個索引處僅有一個值 – 2010-06-16 11:58:07