2010-12-21 26 views
0

這可能是一個愚蠢的問題,但無論如何會問,正弦我不知道。關於全局變量和表單請求的PHP問題

我寫了基本的PHP代碼,它提供了表單。說我有一個登錄頁面,我使用的login.php頁面服務,它就會在頁面的login.html被稱爲像這樣 -

<form action="login.php" method="post"> 

通過這一點,也意味着每一個崗位都需要自己的PHP文件,不是嗎?這種感覺很奇怪。有沒有辦法讓一個單一的文件,說code.php,而只是將每個表單作爲函數?

編輯:具體來說,我說我有5個形式,一個接一個地在我的應用程序中使用。在登錄後說,用戶執行A,B,C和D任務,每個任務都作爲POST請求發送到服務器。因此,而不是有A.php,B.php,C.php和D.php我想有一個code.php並具有A(),B(),C()和D()作爲函數。有沒有辦法做到這一點?

同樣在筆記上,我該如何處理跨多個表單的全局數組(例如當前登錄的用戶數組)?我想在不寫入數據庫的情況下執行此操作。我知道它可能更好地寫入數據庫和查詢,但是甚至可以用全局數組來完成它?我想在一個文件中使用所有表單函數的原因是使用全局數組。

感謝, - 帕烏

+0

'<\form>'中是否有反斜槓?這是無效的HTML。 – deceze 2010-12-21 08:48:21

+0

是的,這是正確的。編輯器不會顯示沒有\的代碼。我想有一種方法可以在問題中鍵入html代碼,但沒有閱讀說明:) – user220201 2010-12-21 08:50:40

+0

http://stackoverflow.com/editing-help 4空格! – deceze 2010-12-21 08:52:28

回答

0

當然,沒問題,只需將所有表單發佈到相同的.php文件,並處理所有傳入的POST數據。沒有什麼可以阻止你這樣做。

雖然通常您的表單會發送不同的數據,但每個表單都需要一些自定義處理。如果你把所有這些邏輯放到同一個處理程序文件中,它將成爲一段非常冗長,雜亂的代碼。如果代碼做了不同的事情,最好將代碼分成不同的文件。

儘管您可以並且應該將公共部分(如數據庫連接處理)抽象爲函數或對象,然後在每個POST處理程序中將它們抽象出來。

+0

好吧,我也不想那樣。根據我對上述問題的編輯,是否可以直接調用code.php中的函數A()而不必使用A.php? – user220201 2010-12-21 08:52:03

+0

@user但是,您在*文件中組織您的代碼*完全取決於您。在調用'A()'的時候,你需要確保在調用它之前有一個定義的函數A(){}'。你可以通過將它放在'a.php'和'include'中來實現,或者在'code.php'中寫入所有'A()','B()'和'Z()'函數。 – deceze 2010-12-21 08:55:20

0

沒有理由爲什麼你不能只是有login.html的和作爲的login.php相同的文件。將這兩個頁面上的代碼合併爲一個代碼塊,然後使用if語句檢查表單是否已發佈。這是你可以提供表單登錄或呈現成功完成的表單的結果。

會話全局變量將處理您的全局數組問題,但我認爲它不適合您的示例。該示例需要一個數據庫表來存儲用戶登錄的時間,因爲沒有其他方法可以從其他人的實例更新應用程序實例上的全局變量。

編輯

我會用一個Session變量,以確定有多少表格已經完成,那麼也許使用switch語句來提供正確的形式:

function a(){ 
    //process form A 
    //if form A okay 
     $_SESSION['form_progress'] = 'b'; 
} 
function b(){ 
    //process form B 
    //if form B okay 
     $_SESSION['form_progress'] = 'c'; 
} 
function c(){ 
    //process form C 
    //if form C okay 
     $_SESSION['form_progress'] = 'd'; 
} 


switch($_SESSION['form_progress']){ 
    case 'b': 
     //serve form B 
     break; 
    case 'c': 
     //serve form C 
     break; 
    case default: 
     //serve form A 
     break; 
} 

希望這有助於

+0

感謝您閱讀我回答我的問題。我在上面對它進行了編輯,使自己更清晰一些。你能否通過編輯和評論呢? – user220201 2010-12-21 08:40:08