我發現這個問題How do I use two submit buttons, and differentiate between which one was used to submit the form?的答案,使用兩個不同的名稱按鈕在多步驟php表單中處理無按鈕被按下的情況?
<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.問:哪個瀏覽器,如果你按在窗體的一個文本框輸入實際上並不發送一個提交按鈕的名稱?我剛剛用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」]的用戶目前網頁,而當表單提交時沒有按鈕值,那麼我會進入下一頁。但是,這對我來說似乎有點複雜。有一個更短的解決方案嗎?
使用JavaScript意味着你只需要在最後一個階段提交一個按鈕。 – Burgi
關於問題1:我不想阻止腳本小子破解我的表單。我只關心在使用過時瀏覽器時嘗試通過表單的人是否會遇到困難。在文本字段中輸入時實際上是否有瀏覽器沒有傳遞按鈕名稱/值?我認爲使用Javascript並不能防止腳本小子侵入表單。我只知道如何隱藏/取消隱藏的東西與JavaScript,但不是每個人都是啊JS啓用。 – Adam