2014-09-03 84 views
1

我有2個PHP表單。如果用戶提交第一個表單,他應該重定向到第二個表單。提交後阻止用戶返回PHP表單

我想阻止用戶在提交後回到第一個表單。截至目前,在我提交第一個表單後,它會將我重定向到第二個表單,但如果我在瀏覽器中按下後退按鈕,則可以看到我以第一個表單插入的所有數據。我在PHP文件的末尾使用header('Location:form2.php')重定向到第二個表單,它工作正常。我搜索了很多關於阻止重新提交表單但仍然無法解決的問題我的問題。

+0

你可能想嘗試做一個AJAX的解決方案。 – Rasclatt 2014-09-03 23:51:38

+0

@Rasclatt:sry你是什麼意思的Ajax解決方案? – mOna 2014-09-03 23:53:01

+0

嘗試檢查一些關鍵,例如,如果第一個表單被填充,那麼現在如果檢測到該關鍵字,則填充關鍵字,然後重定向回第二頁 – 2014-09-03 23:57:40

回答

2

我個人的形式爲在同一頁上(又名form.php的),但功能,根據您通過表單變量頁面上的輸出。

在第一種形式,你可以放一個隱藏的變量,告訴它它已經完成了哪一種形式。

ex:<input type="hidden" name="task" value="form1" />

這樣,當您將變量傳遞給第二個窗體時,您可以控制傳遞的變量並提供propper輸出... ex。

<?php 
if ($_POST['task'] == 'form1') { 
    // show form2 
} else { 
    // show form1 
} 
<? 

然後再次,這只是基於你所描述的。取決於表單的內容可能會改變解決方案。此外,如果您希望用戶在完成表單之前無法返回form1,則需要保存提交的表單變量。

<?php 
session_start(); 
if ($_POST['task'] == 'form1') { 
    $_SESSION['blah'] = $_POST['blah']; 
    $_SESSION['form1'] = true; 
} 
<? 

此時,檢查,看看他們在將類似於何種形式:

<?php 
if ($_SESSION['form1']) { 
    // show form 2 
} 
<? 

只是一個警告,我還沒有任何調試的代碼,因此它可能無法正常工作原樣。

1

也許這就是你想要的, 這是主要想法。

  1. 在同一頁上創建2個窗體,但隱藏第二個窗體。

  2. 當第一個表單的提交按鈕被點擊時,用ajax發送數據,隱藏第一個表單並顯示第二個表單。

    <html> 
    <head> 
    </head> 
    <body> 
         <div class='form1'> 
          Form1<br> 
          <input id='name'> 
          <button id='btnGo'>Send</button> 
         </div><div class='form2' style='display:hidden;'> 
          Form2<br> 
          <input id='location'> 
          <button id='btnGo2'>Send</button> 
         </div> 
    
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> 
    
        <script> 
        $(document).ready(function() { 
         $(".form2").hide(); 
        }); 
    
        $("#btnGo").click(function() { 
         $(".form1").hide(); 
         $(".form2").show(); 
         var name = $("#name").val(); 
          $.ajax({ 
           type: "POST", 
           url: "process.php", 
           data: { name: name}, 
          }); 
    
         event.preventDefault(); 
        }); 
    
        $("#btnGo2").click(function() { 
          var loc = $("#location").val(); 
          $.ajax({ 
           type: "POST", 
           url: "process.php", 
           data: { location: loc } 
          }); 
    
        }); 
        </script> 
    </body>