2014-09-13 55 views
1

所以我一直在考慮這個問題一個小時,並且對最好的方法是檢查哪個表單已經提交感興趣。查看提交表格的最佳方法PHP

因此,可以說我們已經有了formOneformTwo雙方提交formsubmission.php裏邊有我所認爲最合適的方式來檢查提交的是

if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
//do stuff 
} 

但是,什麼是最好的方式實際確定哪種形式已提交,formOne或Two?

我在這裏讀過What is the best way to identify which form has been submitted?,我想知道這些是否是解決這個問題的唯一方法。

我計算過,只是檢查isset($_POST[formname])會很糟糕,由於我讀其他地方有幾個原因,但現在我開始認爲張貼到同一.php文件的整體思路就是不好的做法並沒有什麼好以這種方式檢查提交表單的方式。

正在使用GET並將每種不同的表單提交給單獨的ID不良練習?如果是這樣 - 爲什麼?

所以我的問題是,什麼是最好的方式來檢查哪些形式已被提交,這是很好的做法?

感謝

PS也看着隱藏字段 - >似乎並不值得HTML在質量方面

+0

如果您使用RESTful方式創建網站,那麼您不必擔心提交哪種表單的位置。 [閱讀更多關於REST的信息](http:// stackoverflow。com/questions/671118/what-exactly-is-restful-programming) – Dan 2014-09-13 13:02:40

回答

1

我建議你檢查你收到的場,如果他們不具備完全相同的字段或有一個隱藏的字段告訴你的PHP代碼是什麼形式,這沒有什麼不對。然而,最好的選擇是爲單獨的動作設置單獨的url,而不管哪個php文件最終處理提交。

要做到這一點,你應該看看urlrewrite和htaccess的,這將讓你把一個url像users/deleteusers/addmyphpfile.php?action='delete'(意爲POST數據將被保留),並在你的PHP代碼看看$_GET['action']值來決定哪些代碼跑步。

+0

這是目前我一直在做的事 – Jim 2014-09-13 13:17:23

1

最好的辦法是使用一個不同的名稱爲每個從提交輸入:

對於formOne:

<input type="submit" name="formOne" value="formOneValue" /> 

對於formTwo:

<input type="submit" name="formTwo" value="formTwoValue" /> 

然後在你的PHP文件:

if (!empty($_POST['formOne'])) { 
    //do something here; 
} 

if (!empty($_POST['formTwo'])) { 
    //do something here; 
} 
+0

爲什麼這是「最好的」? – Dan 2014-09-13 13:11:54

+0

@丹沒有必要添加額外的html代碼,這是最簡單的 – Isaac 2014-09-13 13:15:39

+0

這幾乎與使用isset相同 - 顯然這是不好的? – Jim 2014-09-13 13:17:04

0

在我的CMS中,我有更多的三個提交到同一個頁面。您只需要查看使用提交按鈕名稱和值提交了哪個表單。您的請求可以是POST或GET。以下是兩個表單提交到同一頁面的一個示例。 表單提交按鈕名稱不同。

<input type="submit" name="video" id="submit" value="Save"> -- first form 
<input type="submit" name="album" id="submit" value="Save"> -- second form 

if(isset($_POST['video']) && $_POST['video']=='Save'){ 
    #code for first form 
} 

if(isset($_POST['album']) && $_POST['album']=='Save'){ 
    #code for second form 
}