2009-12-22 25 views
3

我有一個CakePHP搜索表單,它有'type'=>'get'。基本上,表單中的一個元素是圖像類型的提交按鈕。當表單發佈時,在URL中我總是會得到這些x & y圖像提交按鈕的座標:CakePHP:預防URL中的GET表單字段

http://site.com/controller/actionX = 22 & Y = 36 &查詢=你好

有沒有什麼辦法可以防止座標從顯示的網址呢?原因是其他人可以使用相同的URL執行相同的搜索,而不會在鏈接中看到不直觀的內容。

謝謝!

+1

將按鈕移出窗體,並在其上粘貼JavaScript以觸發提交窗體。 – 2009-12-23 00:02:02

+0

當我試圖訪問$ _POST變量時,我得到了這些'x'和'y'座標。我希望我的表單可以提交給外部表單處理器,我們將其用作客戶端的集中位置來登錄並下載帶有註冊的CSV文件。他們是誰? – 2011-09-10 19:17:48

+0

當您使用圖像類型的提交按鈕時,x和y座標是。要麼忽略它們,要麼將提交按鈕類型更改爲type =「submit」。 – ash 2011-09-12 18:08:03

回答

3

你可以使用一些JavaScript上的按鈕:在beforeFilter功能

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

或者,在你的控制器,你可以檢查不需要的變量的存在,帶他們出去,並重定向到漂亮的URL 。這確實意味着會有2個HTTP請求。

+0

嗯,我怕這個HTTP請求重複。那麼,我想這是唯一的解決方案。謝謝! – ash 2009-12-23 02:21:44

+0

你嘗試過javascript解決方案嗎? – nickf 2009-12-23 02:22:26

+0

是的,這工作。謝謝! – ash 2009-12-23 03:40:38

1

聽起來像你正在尋找做Post/Redirect/Get

下面是在CakePHP中這樣做的兩個例子:重定向POSTGET請求的

優點是:

  1. 用戶不要沒有你想要的提交?」對話框,如果他們刷新
  2. 結果頁/查詢可以書籤
  3. 您可以利用CakePHP的內置SEF路由,所以不是用/search?q=contact網址,你可以得到/search/contact
0

而不是使用submit輔助功能,使用button函數並設置按鈕類型提交。

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