2015-10-24 30 views
-2

我創建了一個形式,PHP和行動視爲同一個網頁的網址和方法POST在頁面刷新POST數組沒有得到空

<?php 
      if(isset($_POST['submitted']) && $_POST['submitted'] != ''){ 
        echo $_POST['fname']; 
        echo "<br />"; 
        echo $_POST['lname']; 
        echo "<br />"; 
        echo $_POST['submitted']; 
      } 
    ?> 
    <h1>testing...</h1> 

    <form action="test.php" method="POST"> 
      First Name: <input type="text" name="fname" /> 
      Last Name: <input type="text" name="lname" /> 
      <input type="submit" name="submitted" /> 
    </form> 

當我輸入數據並提交它,頁面顯示數據,因爲我打印的數據。但是,當我刷新頁面的數據仍然存在,我希望只有當我點擊提交時才顯示數據。

有人可以幫我嗎? 我做錯了什麼。

+1

如果在提交後刷新頁面,瀏覽器會詢問您是否要重新傳輸數據。 – Federkun

+0

數據仍然顯示,因爲您在刷新時重新提交數據。你想要發生什麼行爲? –

+0

請給出一個'value =「something」'屬性給你的提交按鈕... – TipuZaynSultan

回答

0

AFAIK。這是一個標準的瀏覽器行爲,用f5按鈕重複上次請求。

我的理解是你需要什麼來防止它。這是爲了防止「垃圾郵件」。

所以,你需要明白,第一次提交已經完成。

作爲測試思路,您可以添加發送按鈕的時間戳並在發送時進行檢查。在從按鈕和上發送這種情況下時間戳將用於刷新

+0

我得到了問題,現在試圖解決它。這個鏈接解釋它https://en.wikipedia.org/wiki/Post/Redirect/Get –

0

不同我想通了

0){ $ _SESSION [ '喊'] = $ _POST [ '喊']; header(「HTTP/1.1 303 See Other」); header(「Location:http:// $ _ SERVER [HTTP_HOST] /echoochamber.php」); die(); ($ _SESSION ['shout'])){ } else if(isset($ _ SESSION ['shout'])){ $ echoedShout = $ _SESSION ['shout']; /* 在這裏放入影響數據庫的代碼。 */ session_unset(); session_destroy(); } ?>

或者我在codeigniter中使用set_flashdata做了它,它只爲下一個請求存儲會話數據。