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