有些URL仅用于在成功操作后重定向用户。 (例如提交反馈后的“谢谢”页面。)
问题是这些页面可以直接访问。
有没有办法阻止这种情况?
答案 0 :(得分:2)
function thank_you() {
if($this->referer() != 'some_url') {
$this->redirect('/');
}
}
在您不希望直接访问的方法中,只需检查推荐人是否有效(即“谢谢”页面的“联系表格”。
如果引荐来源不是“联系表单”,您可以重定向到任何地方。如果匹配,则输出感谢页面。
答案 1 :(得分:0)
您可以在完成操作后创建并存储随机密钥,然后在重定向之前简单地验证密钥(使用组合或会话,网址或数据库,您的选择)是否有效。
答案 2 :(得分:0)
Controller::flash看起来可以帮到你。
答案 3 :(得分:0)
我在重定向之前的页面上设置了一个会话变量。然后在“谢谢”页面上,测试变量并取消设置。如果在进行测试时不存在,则重定向到错误页面,该页面显示“无法直接访问此页面。”
我从未使用过Cake,所以这是一个普通的PHP答案,而不是Cake特定的答案。