2014-09-03 85 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>