【发布时间】:2016-01-21 19:11:20
【问题描述】:
我为问题How do I use two submit buttons, and differentiate between which one was used to submit the form?找到了使用两个不同名称按钮的答案
<input type="submit" name="publish" alt="Publish" value=""/>
<input type="submit" name="save" alt="Save" value=""/>
然后检测哪个被按下
<?php
if (isset($_POST['publish'])) {
// Publish-button was clicked
}
elseif (isset($_POST['save'])) {
// Save-button was clicked
}
?>
然后我在How can I tell which button was clicked in a PHP form submit?这个问题的答案中发现不应该这样做,因为可能会发生没有点击任何按钮的情况。
存在其他提交表单的方式,并且某些浏览器/版本决定 不要在其中一些中发送任何提交按钮的名称/值 情况。例如,许多用户通过按 Enter 提交表单 光标/焦点位于文本字段上时的键。表格也可以 通过javascript提交,以及一些更晦涩的方法。
应该使用
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
//something posted
if (isset($_POST['publish'])) {
// Publish-button was clicked
} else {
// Assume Save-button was clicked
}
}
1.问题: 如果您在表单的文本字段中按 Enter,哪个浏览器实际上不会发送提交按钮的名称?我刚刚用 Mozilla 进行了检查,在这个浏览器中它正在发送提交按钮的名称。
2.问题:我想在php中构建一个从第1页到第3页的多步骤表单。所有页面都在同一个php文件中,我从按钮检测到我想下一个页面,结构看起来和这个类似:
<?php
if(isset($_POST['button1']))
{
include 'page2.php';
}
elseif(isset($_POST['button2']))
{
include 'page3.php';
}
else
{
include 'page1.php';
}
?>
由于我有前进和后退按钮,我正在考虑将用户当前所在的页面存储在 $_SESSION['current_page'] 中,并且当提交的表单没有按钮值时,我会继续下一页。但是,这对我来说似乎有点太复杂了。有没有更短的解决方案?
【问题讨论】:
标签: php form-submit