2014-04-05 138 views
0

我正在通過GET請求工作的投票系統知道哪些帖子ID必須更新。但是當投票完成後,我的url中仍然有get請求(/?vote_up = 123),所以如果用戶刷新他的頁面,投票將被重新設置。而這不應該發生。PHP刪除從URL獲取請求

我現在已經完成投票後,但這不起作用。

$_SERVER['REQUEST_URI'] = strtok($_SERVER['REQUEST_URI'], '?'); 

任何人都可以幫助我嗎?

回答

0
$new_url = preg_replace('/&?return=[^&]*/', '', $old_url); 
+0

感謝您的回答。你能解釋一下嗎? – Robbert

2

首先,表決鑄造的行動不應該依賴GET請求,其定義應檢索信息,而不是設置信息。

也就是說,您應該使用PUT請求(或POST請求來簡化事情),並且您的投票轉換不應該直接訪問後端URL,因爲即使它是POST請求,它也會重新觸發自身if用戶重新加載。

我建議你在前端使用一個ajax投票系統,它將POST或PUTs數據發送到你的PHP後端,並有一個不影響當前用戶位置url的異步請求。與此同時,一種緊急解決方案是使用POST請求投票,然後登陸一個將用戶重定向到任何地方的URL(假設您可以從多個頁面進行投票)。在過程結束時,用戶的位置不是收聽POST的位置,而是他重定向到的位置,因此對他進行刷新或重新加載是無害的。

0

我認爲你必須在投票設置好之後將用戶重定向到同一頁面,並且重定向url將由parse url函數設置。