多个表单和一个处理页面


Multiple forms and one processing page

请我需要你的帮助来解决一个问题。我的主页上有两个表单,我希望用户在不同的时间填写和提交。我的问题是我只想为它们提供一个处理页面。通常我可以在单独的页面中执行此操作。但我想知道是否可以在同一页面上这样做。

好。。如果我在操作页面上提交表单 A,表单 B 的变量不会有未定义的索引,该变量尚未提交,当然不建议使用 GET。

感谢您的时间和耐心。

这样做并非完全闻所未闻。通常,在表单元素的 action 属性中传递不同的参数,例如 /submit.php?action=register/submit.php?action=activate

所以,你有这样的代码:

if ($_GET['action'] == 'register') {
  // Register user
} else if($_GET['action'] == 'activate' {
  // Activate user
}

但是,您也可以只更改提交按钮的值,并使两个表单的操作属性相同:

if (isset($_POST['submit'])) {
  if ($_POST['submit'] == 'register') {
    // Register user
  } else if($_POST['submit'] == 'activate') {
    // Activate user
  }
}

创建单独的form_process脚本,然后包含在表单页面中。

if(!empty($_POST)){
 include 'form_process.php';
}

form_process.php应该只包含类/函数,没有回显或打印输出。

或者,您可以将操作URL设置为同一页面,然后重定向回正确的页面。

<form id="add-profile-form" action="form_controller.php" method="post">
    <input type="hidden" name="act" value="adding"/>
    <!-- form 1. -->
</form> 
<form id="edit-profile-form" action="form_controller.php">
    <input type="hidden" name="act" value="editing"/>
    <!-- form 2. -->
</form>

form_controller.php

if(isset($_POST['act']){
    if($_POST['act'] == 'adding'){
        //process form1
    }else if($_POST['act'] == 'editing'){
        //process form2
    }
    header("Location: success.php");
}

您也可以在同一页面上执行此操作。只是您需要为两种形式action相同。

您需要根据源表单创建一些条件并编写用于Form AForm B的单个功能。

您可以像@Ami使用的那样检查操作中的参数。

/submit.php?action=register/submit.php?action=activate

所以,你有这样的代码:

if ($_GET['action'] == 'register') {
  // Register user
} else if($_GET['action'] == 'activate' {
  // Activate user
}

但是,您也可以只更改提交按钮的值,并使两个表单的操作参数相同:

if (isset($_POST['submit'])) {
  if ($_POST['submit'] == 'register') {
    // Register user
  } else if($_POST['submit'] == 'activate') {
    // Activate user
  }
}