1

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

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

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

4

4 回答 4

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

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

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

于 2012-09-08T10:32:36.177 回答
0

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

于 2012-09-08T04:05:57.043 回答
0

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

于 2012-09-08T04:33:24.127 回答
0

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

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

于 2012-09-08T04:45:26.053 回答