在PHP中,我如何将表单数据发送到一个页面,但当他单击提交按钮时,将用户引导到另一个页面


In PHP how do I send form data to a page but direct the user to another when he clicks the submit button?

以下面这个简单的表单为例:

<form method="post" action="reports.php">
<input type="text" name="name">
<input type="text" name="email_address">
<input type="submit" value="Submit">

我希望它将输入字段数据发送到reports.php页,但我希望它在用户单击"Submit"按钮时将用户引导到uploads.php页。

reports.php页面上使用header("Location: uploads.php")不是一个选项,因为reports.php将表单数据收集到一个表中供每个人查看。在uploads.php页面中,用户将上传的文件也将在reports.php表中可见。

我该怎么做?

您可以检查请求reports.php时使用的方法是否为POST,并重定向用户。

<?php
# reports.php
if($_SERVER['REQUEST_METHOD'] === 'POST') {
    // process the data
    header("Location: ...");
    exit;
}

或者您可以简单地创建add_report.php文件

你可以用javascript添加"on form submit"事件。

当提交按钮被点击时-用javascript收集表单数据并将其发送到需要的地方。当ajax工作时-使用javascript将用户重定向到所需的页面。

一个完整的例子应该是这样的:

对html

<form method="post" id="my_form">
<input type="text" name="name">
<input type="text" name="email_address">
<input type="submit" value="Submit">
对javascript

<script>
$(function(){
   $('#my_form').on('submit', function(e){
       e.preventDefault();
       var url = 'reports.php?' + $(this).serialize();
       $.get(url, function(){
           window.location.href = 'uploads.php';
       });
   })
})
</script>

更多信息可以在这里找到:https://api.jquery.com/serialize/

你需要重构你的代码。

听起来你的用例是:

  1. GET到上传:显示上传表单
  2. POST到某处:添加到报告中,然后显示上传表单
  3. GET到报告:显示报告列表
  4. POST到报告:添加到报告,然后显示上传表单

不要担心将"某处"设置为报告文件。

将"Add to reports"代码分离成一个函数(或多个函数),并将它们放入自己的文件中。

然后将该文件包含在报告和上传中。

使上传表单提交给上传者,然后调用"Add to reports"功能。

在报告中做类似的事情