2012-09-08 86 views
1

有些URL只用於在成功操作後重定向用戶。 (例如,提交反饋後的「謝謝」頁面)。阻止用戶直接訪問CakePHP中的重定向URL

問題是這些頁面可以直接訪問。

有沒有辦法來防止這種情況?

+2

它真的很重要嗎?用戶必須知道的網址,並沒有在網頁上如果直接訪問它 – 2012-09-08 04:18:04

回答

2
function thank_you() { 
    if($this->referer() != 'some_url') { 
     $this->redirect('/'); 
    } 
} 
你不想直接訪問的方法

,只是檢查,看看是否引用有效(即「聯繫表」,爲「謝謝你」頁面。

如果引薦是不是「聯繫表」,你可以重定向到任何地方,如果匹配,輸出謝謝頁

+0

我的網址是動態paypal令牌和付款人ID更改 –

+0

,如果是你的引薦https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token=EC-11W764021U1052947#pageState=EConsentAgreement&pageDispatch=5885d80a13c0db1f8e263663d3faee8da6a0e86558d6153d7722c6eea13ecd7b&pageSession=wENIyr4Q_qBw2IVmpM8kAefjvns7ejY55iNpZB-99i1zV1ROJR0JRNnnlSq? –

+0

這隻有當你有一個靜態url時纔有用 –

0

您可以在完成操作後創建並存儲一個隨機密鑰,然後在重定向之前驗證該密鑰(使用組合或會話,url或db,您的選擇)是否有效。

+0

解釋進一步io是http referer更安全的方式嗎? –

0

我會在重定向之前在頁面上設置會話變量。然後在「謝謝」頁面中,變量進行測試並取消設置。如果在測試完成時不在那裏,那麼重定向到一個錯誤頁面,其中顯示「無法直接訪問此頁面」。

我從來沒有使用Cake,所以這是一個普通的PHP答案,而不是Cake特有的。