2011-06-30 26 views
1

我正在創建一個表單嚮導,要求用戶逐步完成每個步驟,然後再轉到下一個步驟。使用SESSION控制PHP WebApp狀態

現在,一旦一個步驟被驗證並完成,我將$_SESSION['step']切換到下一步,並在下一步加載時檢查該變量以確保其有效。如果用戶試圖跳到不按順序的步驟,則$_SESSION['step']將阻止加載步驟。

這是正確的做法嗎?另外,一旦完成一個步驟,我希望用戶能夠返回並編輯在任何給定的前一步驟中輸入的值。我的方法不允許這樣做,因爲我不知道如何將會話更改爲他們正在重訪的步驟,而不知道它是否是有效的請求。

對此的任何輸入將不勝感激!

回答

2

這種方法沒有問題,儘管您可能有點受限,因爲這不適用於多個表單。但是,如果這只是一個小應用程序,那麼不用擔心。第二個問題我不確定我理解,但$ _SESSION可以接受任何數據類型,包括數組,所以只需填寫一個$ _SESSION到目前爲止您所在的位置以及您已完成的操作;

$_SESSION['my_form'] = array (
    'current_step' = 'step_2', 
    'step_1' = array (// the form elements), 
    'step_2' = array (// the form elements), 
    'step_3' = array (// the form elements), 
    'step_4' = array (// the form elements), 
) ; 

接下來,您將提供每個點的驗證正常。你也可以在每一張表格上加一個小旗子,不管他們是否已經填寫完畢;

'step_2' = array (
     'complete' = true, 
     // form elements/fields here 
    ), 

另一種切片方法是使用數千個動態表單之一。例如,使用JQuery,您可以使用Accordion插件(來自JQuery UI)在一個HTML頁面中模擬整個事情。

+0

這是有道理的,是沿着我的想法,只有更有組織。感謝您的輸入! –