3

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

http://site.com/controller/actionx=22&y=36 &查询=你好

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

谢谢!

4

3 回答 3

3

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

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

或者,在beforeFilter函数的控制器中,您可以检查是否存在不需要的变量,将它们删除并重定向到漂亮的 URL。这确实意味着将发出 2 个 HTTP 请求。

于 2009-12-22T23:22:15.377 回答
1

听起来您正在寻找Post/Redirect/Get

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

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

  1. 用户没有收到“您要重新提交吗?” 如果他们刷新对话框
  2. 生成的页面/查询可以添加书签
  3. 您可以利用 CakePHP 的内置 SEF 路由,因此/search?q=contact您可以获得/search/contact
于 2009-12-24T12:39:16.533 回答
0

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

echo $this->Form->**button**($this->Html->image('header_search_icon.png'), array(**'type'=>'submit'**));
于 2015-06-16T19:29:50.790 回答