2013-04-22 69 views
1

PHP新手,我試圖讓我的網站防篡改。如果有人在瀏覽器地址欄中修改網址,我想重新加載網頁網址。我想過的一種方法是將頁面url存儲在會話變量中,以便在需要時重用。
下一頁的URL來自一個基於用戶選擇的SQL查詢(可能有幾十個),所以我不提前知道網址是什麼。我想要做的是恢復當用戶點擊一個鏈接(當你懸停在鏈接上時Firefox顯示在左下角的地址)並將其存儲在會話變量中時發送到服務器的地址。 這是可能的,如果是這樣,我怎樣才能用PHP恢復它?如何使用php修復已修改的地址欄

+1

這聽起來像可怕的可用性。 – Matthew 2013-04-22 20:48:20

+0

如果我正確理解您的問題,該值已存儲在$ _SERVER數組中。 – Jerry 2013-04-22 20:48:52

+0

Erm ...這不是一個非常複雜的說法:我想將用戶重定向到上一頁? (如果沒有,請參閱Matthews的回答...)。 – Wrikken 2013-04-22 20:52:34

回答

1

你真的不需要超過一個URL。您可以在整個頁面序列中使用相同的URL,因爲服務器知道下一步該做什麼。

通知您自己關於「有限狀態機」以及它們如何幫助您實現創建一個工作流程,該工作流程僅允許基於您給用戶的選擇進行非常有限的一組操作。您很可能需要爲此進行一次會話。

如果做得正確,用戶不能與URL篡改,因爲所有其他的URL將導致404或東西,並試圖與接受,如果步希望用戶選擇只會工作的一個URL撥弄在列表中允許的步驟 - 否則沒有任何變化。

爲了說明:

第一狀態爲「開始」,並且允許轉換是「答案1」和「回答2」。這些轉換到兩個結束狀態,沒有進一步的轉換。因此,無論用戶什麼時候到達「回答1」的狀態,除了創建一個新的會話,如果機器狀態與會話沒有關聯,也不可以進入另一個狀態,而是用戶帳戶。