2012-12-12 92 views
0
if($_POST) 
    { 

     if($this->session->userdata('just_sended')) 
     { 
      echo 'just sended'; 
      exit(); 

     } 

     $newdata = array(
        'just_sended' => true 

     ); 
     $this->session->set_userdata($newdata); 
    } 
    else 
    { 
     $newdata = array(
        'just_sended' => false 
     ); 
     $this->session->set_userdata($newdata); 

    } 

這是我的代碼,當用戶發送POST請求,但爲什麼它不工作,用戶修建垃圾按鈕「發送」和我無法弄清楚我數據庫出現重複,有什麼想法?如何停止用戶發送POST請求

回答

2

將用戶重定向一個帖子後,所以客戶端無法轉貼按F5數據:

header("Location: /submitted.php"); 
echo 'just sended'; // will the user never see 
exit(); 

sumbitted.php:

exit('just sended'); 

注:不得張貼任何標題行之前的其他數據。

+0

我不知道爲什麼,但它不會將用戶重定向,只是忽略了,如果just_sended它必須重定向檢查後,看起來像服務器沒有時間來保存會話,並且用戶再次發送 – Zecrow

+0

只是檢查,你不頭的'調用之前別的輸出不同的是()',它也有可能是你有你'<?php'標記之前一些空行。 – rekire

+0

是在PHP功能處理該請求的第一行中,<?PHP的前沒有空格 – Zecrow

0

不要試圖與會話做到這一點,將您的信息看帖子的最後有一些獨特的密鑰(就像他們的IP地址)之前剛剛查詢數據庫,如果信息是相同的,那就不要插。

另外,如果你想確保它只是你不從插塊插入最近你可以存儲一個時間戳。

+0

這是比較複雜的,實在是沒有其他的選擇,而不是進行查詢分貝解決這個問題? – Zecrow

+0

總有其他問題的解決方案,這可能不像你想象的那麼複雜。它並不需要你來處理試圖處理會話變量和頭部重定向。 –