2009-01-08 175 views
4

我在頁面上有一個表單,用戶有輸入來編輯一個XML文件,表單的動作是將它發送到一個單獨的PHP腳本,在腳本發出提交後進行編輯。腳本將寫入成功或失敗,無論哪種方式,我都會通過標題將它重定向回表單頁面。是否有簡單的方法將確認或失敗消息傳回給表單頁面?我可以在網址中完成,但我寧願保持整潔。PHP在頁面之間傳遞消息

回答

16

我已經看到它完成(以及我個人使用)的方式只是會話。

// process something 
if($success) { 
    flash_message('success','Did whatever successfully.'); 
} else { 
    flash_message('error','Oops, something went wrong.'); 
} 
header('Location: whatever.php'); 

然後在其他地方,在你的庫或函數的文件或什麼:

function flash_message($type, $message) { 
    // start session if not started 
    $_SESSION['message'] = array('type' => $type, 'message' => $message); 
} 
視圖/頁

然後,你可以這樣做:

if(isset($_SESSION['message'])) { 
    printf("<div class='message %s'>%s</div>", $_SESSION['message']['type'], 
    $_SESSION['message']['message']); 
    unset($_SESSION['message']); 
} 

這是很基本的,但你可以從那裏擴展它,如果你想多個消息等。底線是我相信會議是最好的。

2

我更喜歡將表單處理代碼和表單顯示代碼放在同一頁面中。如果你真的想將它分開,你可以將代碼移動到不同的文件中,並從表單文件中包含該文件,但是從客戶端它看起來像是同一個PHP文件。

然後,始終提交到表單並在顯示錶單之前在頂部進行錯誤檢查。如果有消息顯示,您只需再次顯示錶單,並顯示消息以及用戶的數據,以便他們可以解決問題。他們可以再次提交,您可以再次檢查錯誤。如果他們成功提交,您可以將它們重定向到其他地方,或者僅顯示「成功」消息。