阻止用户直接访问CakePHP中的重定向URL

时间:2012-09-08 04:00:48

标签: php cakephp

有些URL仅用于在成功操作后重定向用户。 (例如提交反馈后的“谢谢”页面。)

问题是这些页面可以直接访问。

有没有办法阻止这种情况?

4 个答案:

答案 0 :(得分:2)

function thank_you() {
    if($this->referer() != 'some_url') {
        $this->redirect('/');
    }
}

在您不希望直接访问的方法中,只需检查推荐人是否有效(即“谢谢”页面的“联系表格”。

如果引荐来源不是“联系表单”,您可以重定向到任何地方。如果匹配,则输出感谢页面。

答案 1 :(得分:0)

您可以在完成操作后创建并存储随机密钥,然后在重定向之前简单地验证密钥(使用组合或会话,网址或数据库,您的选择)是否有效。

答案 2 :(得分:0)

Controller::flash看起来可以帮到你。

答案 3 :(得分:0)

我在重定向之前的页面上设置了一个会话变量。然后在“谢谢”页面上,测试变量并取消设置。如果在进行测试时不存在,则重定向到错误页面,该页面显示“无法直接访问此页面。”

我从未使用过Cake,所以这是一个普通的PHP答案,而不是Cake特定的答案。