2017-09-20 58 views
-1

在處理表格服務器端,我們需要確保HTML形式有其方法和操作設置如下所示:php - 頁面中的每個html表單都需要不同的php文件嗎?

<form action="filename.php" method="post"> 
.... 
</form> 

我明白,我們可以使用jQuery/javascript來處理表單提交不同(如執行函數在多個.php文件中),但這是否意味着如果我在頁面上有3個表單 - 比如聯繫表單,訂閱表單和用戶查找/搜索表單 - 那麼我需要每個3個.php文件?

+0

這取決於你,但會更好讓每個文件處理每個表格以提高可讀性,以免別人可以在網站上工作 –

+0

不,沒有這樣的要求。你能描述一下你正在嘗試解決的問題,還是你面對的代碼問題? –

+0

您可以傳遞參數並在服務器端檢查 –

回答

2

你其實並不需要多個文件,你可以做類似下面:

<form name="form1" action="filename.php" method="post"> 
.... 
<input type="submit" name="form1-submit" value="form1" /> 
</form> 

<form name="form2" action="filename.php" method="post"> 
.... 
<input type="submit" name="form2-submit" value="form2" /> 
</form> 
<form name="form3" action="filename.php" method="post"> 
.... 
<input type="submit" name="form3-submit" value="form3" /> 
</form> 

filename.php

<?php 
if (!empty($_POST['form1-submit'])) { 
    //do something here; 
} 

if (!empty($_POST['form2-submit'])) { 
    //do something here; 
} 
if (!empty($_POST['form3-submit'])) { 
    //do something here; 
} 
?> 
+0

很好解釋!我不知道我們可以通過隱藏的輸入過濾[type =「submit」]。這絕對是一種將相關函數編譯成一個php文件而不是爲每個php文件創建一個更有效的方法。謝謝!我剛開始學習php表單處理,這非常有用! –

+0

by * input [type =「submit」] –

1

在頁面中有多個表單可以。

每個你可以提交相同的目標腳本,並通過HTTP方法區分:

<form action="filename.php" method="post"> 
</form> 
<form action="filename.php" method="get"> 
</form> 

你可以發佈到不同的目標:

<form action="foo.php" method="post"> 
</form> 
<form action="bar.php" method="get"> 
</form> 
<form action="baz.php" method="post"> 
</form> 

你可以使用一個隱藏的價值,並在服務器腳本使用該格式來區分:

<form method="POST"> 
    <input type="hidden" name="form" value="foo"> 
    <input type="submit" name="submit" value="Go"> 
</form> 
<form method="POST"> 
    <input type="hidden" name="form" value="bar"> 
    <input type="submit" name="submit" value="Go"> 
</form> 

示例過程唱歌:

if($_SERVER['REQUEST_METHOD'] === 'POST') { 

    $form = isset($_POST['form']) 
     ? $_POST['form'] 
     : null; 

    switch($form) { 
     case 'foo': 
      process_form_foo($_POST); 
     break; 
     case 'bar': 
      process_form_bar($_POST); 
     break; 
     default: 
      throw new Exception('Invalid form submission.'); 
    } 

} 

我會小心地將所有這些集中在一起。如果你這樣做,注意分解成可管理的部分。

+0

感謝@Progrock,我應該更具體一點,我關心使用POST方法的表單。不同的http方法雖然是一個很好的建議,但是我還需要一些關於php文件如何以正確的形式執行正確函數的指導。非常感謝! –

+0

不同的http方法,只是一個頁面上有多個表單的例子。我爲多個表單處理添加了一個簡單的輪廓。 – Progrock

相關問題