PHP表单需要提交2次才能获取post数据。
问题出现的原因是因为在显示表单的各个网页上,必须从整体的网站角度处理表单操作,而不仅仅是在单个网页上处理。使用php时,可以使用布局功能来处理html,但不要忘记在全局范围内处理POST操作。
解决方法是将表单的处理操作放在全局范围内。可以在一个单独的php文件中处理表单提交,然后在所有的网页中引用这个文件。这样,无论表单在哪个网页上提交,都能够正确地执行提交操作。
以下是一个示例代码,展示如何在全局范围内处理表单提交:
// form.php // 处理表单提交 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 处理表单逻辑 // ... // 重定向到结果页面或其他操作 header('Location: result.php'); exit; } ?>
// result.php // 处理结果页面的逻辑 // ...
在这个示例中,我们将表单的处理逻辑放在了一个名为`form.php`的文件中。无论表单在哪个网页上显示,都可以将表单的`action`属性设置为`form.php`,这样表单提交时就会调用`form.php`中的处理逻辑。
在`form.php`中,我们首先检查请求的方法是否为POST,如果是POST请求,就执行表单的处理逻辑,并在处理完之后重定向到结果页面或其他操作。
这样,无论表单在哪个网页上提交,都只需要点击一次提交按钮即可正常执行表单的提交操作。