操作が成功した後にユーザーをリダイレクトするためだけに使用するURLがあります。(例:フィードバックを送信した後の「ありがとう」ページ)。
問題は、これらのページに直接アクセスできることです。
これを防ぐ方法はありますか?
function thank_you() {
if($this->referer() != 'some_url') {
$this->redirect('/');
}
}
直接アクセスしたくない方法では、リファラーが有効かどうかを確認してください(つまり、「ありがとう」ページの「お問い合わせフォーム」)。
リファラーが「お問い合わせフォーム」でない場合は、どこにでもリダイレクトできます。一致する場合は、ありがとうページを出力します。
操作の完了時にランダムキーを作成して保存し、リダイレクトする前にキー(組み合わせまたはセッション、URL、またはdb、選択を使用)が有効であることを確認するだけです。
Controller::flashがあなたを助けることができるように見え ます。
リダイレクトの直前にページにセッション変数を設定しました。次に、「ありがとう」ページで、変数がテストされ、設定が解除されます。テストが行われたときにそこになかった場合は、「このページに直接アクセスすることはできません」というエラーページにリダイレクトします。
私はCakeを使ったことがないので、これは一般的なPHPの答えであり、Cake固有の答えではありません。