CakePHP:防止URL中的GET表单字段

时间:2009-12-22 23:17:50

标签: php cakephp get form-helpers

我有一个'type'=>'get'的CakePHP搜索表单。基本上,表单中的一个元素是图像类型的提交按钮。当表单发布时,在URL中我总是得到这些x&图像提交按钮的y坐标:

http://site.com/controller/action X = 22&安培; Y = 36 &安培;查询=你好

有什么办法可以阻止坐标显示在网址中吗?原因是其他人可以使用相同的URL来执行相同的搜索,而链接中没有那些不直观的东西。

谢谢!

3 个答案:

答案 0 :(得分:3)

你可以在按钮上使用一些javascript:

document.getElementById('myImageButton').onclick = function() {
    this.form.submit();
    return false;
};

或者,在beforeFilter函数的控制器中,您可以检查是否存在不需要的变量,将其删除并重定向到不错的URL。这意味着虽然会有2个HTTP请求。

答案 1 :(得分:1)

听起来你想要做Post/Redirect/Get

以下是在CakePHP中执行此操作的两个示例:

POST重定向到GET请求的优点是:

  1. 用户没有收到“您要重新提交吗?”刷新对话框
  2. 生成的页面/查询可以加入书签
  3. 您可以使用CakePHP的内置SEF路由,因此您可以获取/search?q=contact
  4. 而不是/search/contact的网址

答案 2 :(得分:0)

不使用submit辅助函数,而是使用button函数并设置按钮类型进行提交。

echo $this->Form->**button**($this->Html->image('header_search_icon.png'), array(**'type'=>'submit'**));