我有2个PHP表单。如果用户提交第一个表单,则应将其重定向到第二个表单。
我想阻止用户在提交后回到第一个表单。截至目前,在我提交第一个表单后,它会将我重定向到第二个表单但是如果我按下浏览器中的后退按钮,我可以看到我在第一个表单中插入的所有数据。
(我在我的PHP文件末尾使用了标题('位置:form2.php')重定向到第二个表单并且它正常工作。我搜索了很多关于阻止重新提交表单但仍然我无法解决我的问题。
答案 0 :(得分:2)
我个人认为该表单位于同一页面(aka form.php),但是根据您通过表单传递的变量来控制页面上的输出。
在第一个表单上,您可以放置一个隐藏的var,告诉它哪个表单已经完成。
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表单,但隐藏第二个表单。
点击第一个表单的提交按钮后,使用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>