2012-05-11 51 views
2

我目前正在使用$_SESSION構建多頁表單,到目前爲止,所有內容都工作正常。然而,即使我能夠在6頁結束檢索所有數據,似乎是不可能回去的形式,如果用戶犯了一個錯誤。以多頁形式返回

假設他在第5頁,他意識到他需要返回第3頁來改變某些內容,他將無法做到這一點。火狐給出了這樣的錯誤消息:

文件過期 本文檔不再可用。 請求的文檔不可用在Firefox的cache.As安全起見,火狐不會自動重新請求敏感documents.Click再次嘗試從網站重新請求文檔。

這是我的形式是什麼樣子,這個是形式,1.PHP:

<form action="Form-2.php" method="post"> 
     <fieldset> 
       <legend>Information</legend> 
       <p> 
        <label for="name">Name</label> 
        <input id="name" type="text" name="name" required/> 
       </p> 
       <p> 
        <label for="age">Age</label> 
        <input id="age" type="number" name="age" placeholder="Ex. 1988" required/> 
       </p> 
       <p> 
        <input id="sex-m" type="radio" name="sex" value="Male" required/> 
        <label for="sex-m">Male</label> 
        <input id="sex-f" type="radio" name="sex" value="Female" required/> 
        <label for="sex-f">Female</label> 
       </p> 
     </fieldset> 
     <input type="submit" value="Next page"/> 
</form> 

我使用SESSION檢索從以前的表格數據,這個人是來自晶,2.PHP :

session_start(); 

$_SESSION['name'] = $_POST['name']; 
$_SESSION['age'] = $_POST['age']; 
$_SESSION['sex'] = $_POST['sex']; 

等六頁。

它工作正常,它檢索所有值正確,但填寫表單時不可能返回。

我在做什麼錯?如何確保用戶能夠返回,如果他犯了一個錯誤?

感謝您的幫助。

編輯:

我結束了下面的代碼,解決我的問題的一半。仍然表單的2.PHP:

session_start(); 

if (isset($_SESSION['location']) && isset($_SESSION['job'])) { 
     $location = $_SESSION['location']; 
     $job = $_SESSION['job']; 
} else { 
     $_SESSION['name'] = $_POST['name']; 
     $_SESSION['age'] = $_POST['age']; 
     $_SESSION['sex'] = $_POST['sex']; 

     $location = ''; 
     $job = ''; 
} 

然後,我只是顯示在字段中的值:

如果文本:<?php echo $location; ?>

如果電臺:<?php if(isset($job) && $job == "Yes"){echo "checked=\"checked\" ";} ?>

它工作的很好,不同的形式 - 如果價值已經設定 - 預填充就好了。

我的問題是,你可以看到,如果我回去變化的值,它不會因爲我忽略POST如果存儲在SESSION相應的值考慮在內。

我不知道如何使這個工作正常...任何提示?

+0

Fyi,英文單詞「信息」不存在。它始終是「信息」。 – ThiefMaster

+0

的確,我很快翻譯了我的表格,並且錯過了這個! – morgi

回答

1

不是最好的解決方案,但做的工作:不要使用後退按鈕,提供您自己的前進,後退,「步驟」按鈕。然後用存儲在例如會議。

+0

我已經在使用這樣一個按鈕:''。後退按鈕可以很好,我怎樣才能實現它,而不會搞亂我的數據呢? – morgi

+0

好吧,不是那麼容易。你必須找到自己的方式來處理所有的帖子,會話(+驗證,+ db_data_format)數據。我使用某種form2session,session2form,session2db +驗證類來處理所有這些。 – djot

+0

我明白了,你能告訴我一個例子,或者一段能夠幫助我開始的代碼嗎?這種形式有點特別,它不需要任何SQL請求或任何東西,我只需要收集數據並組裝它。 – morgi

0

djot是正確的,你需要一個< <回>>和< <前進>>按鈕,你可以在功能上做的是如果單擊後退按鈕通過網頁/表單的值作爲隱藏的輸入字段和填充這些字段使用隱藏的值。..