我需要你的帮助来解决一个问题。我的主页上有两个表格,我希望用户在不同时间填写和提交。我的问题是我希望他们两个都只有一个处理页面。通常我可以在单独的页面中执行此操作。但我想知道是否可以在同一页面上进行操作。
好的.. 如果我在操作页面上提交表单 A,不会有未提交的表单 B 变量的未定义索引,当然不建议使用 GET。
感谢您的时间和耐心。
这样做并非完全闻所未闻。很多时候,在表单元素的 action 属性中传递了一个不同的参数,比如/submit.php?action=register
or /submit.php?action=activate
。
所以,你有这样的代码:
if ($_GET['action'] == 'register') {
// Register user
} else if($_GET['action'] == 'activate' {
// Activate user
}
但是,您也可以只更改提交按钮的值,并使两种表单的 action 属性相同:
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
}
}