2011-05-09 131 views
0

我想提交表單並更新記錄後,在PHP的幫助下清除表單。如何通過PHP清除html表單?

+0

你是什麼意思「清除我的表單」?你能否更詳細地解釋你的問題?一些代碼證明了這個問題呢? – Charles 2011-05-09 07:03:27

+3

咦?恰恰相反,你通常需要產生大量代碼來保存*表單輸入。清除它應該像無所事事一樣簡單... – deceze 2011-05-09 07:03:42

回答

0

html表單是客戶端......而PHP運行服務器端,本質上你將不得不使用客戶端代碼在onsubmit動作中重置表單的值。最簡單的方法是使用javascript清除所有輸入的值。

+2

客戶端重置的最簡單*方法是 2011-05-09 07:16:05

+0

是的,這個問題有點含糊 – samccone 2011-05-09 18:11:51

+0

這是一個正確的答案,但我也認爲這是一個很好的做法,有一個備份的情況下,讓我們說,JavaScript沒有啓用(罕見,但可能發生)。所以,如果你不通過PHP來做到這一點,並且JavaScript沒有啓用,你的網站將無法正常工作。或者至少是它的一大部分。 – Limon 2014-02-04 19:47:26

2

我會建議你在提交表單後重定向用戶。這將清除所有POST或GET數據。

header('Location: foobar.php'); 

或者您可以在成功提交後取消設置值。

unset($_POST['fieldname'], $_POST['fieldname2']); 
+1

據我所知,清除POST變量將無濟於事。如果用戶重新加載頁面,POST數據將被重新發送。 – Svish 2011-05-09 07:14:25

1

只需取消您用於填充表單的變量。

0

你可以,如果重新加載頁面unset POST/GET變量和避免數據重發:

PHP代碼:(avoidResend.php):

if(!empty($_POST) OR !empty($_FILES)) 
{ 
    $_SESSION['save'] = $_POST ; 
    $_SESSION['saveFILES'] = $_FILES ; 

    $currentFile = $_SERVER['PHP_SELF'] ; 
    if(!empty($_SERVER['QUERY_STRING'])) 
    { 
     $currentFile .= '?' . $_SERVER['QUERY_STRING'] ; 
    } 

    header('Location: ' . $currentFile); 
    exit; 
} 

if(isset($_SESSION['save'])) 
{ 
    $_POST = $_SESSION['save'] ; 
    $_FILES = $_SESSION['saveFILES'] ; 

    unset($_SESSION['save'], $_SESSION['saveFILES']); 
} 

包括在你的頁面的最頂端這個文件,提交表格後unset($_POST['v1'], $_POST['v2'], $_POST['v3']);

乾杯!