2013-03-01 84 views
0

我在網站上有用於搜索數據庫中的對象的表單。問題是用戶可以使用許多屬性進行搜索,所以我不確定應該使用POST方法將值傳遞給其他腳本還是應該將所有變量放入URL中並使其他腳本獨立並且只能使用鏈接。使用哪種方法?

例如,如果我會使用GET方法,URL將如下所示:

/.../searching_objects.php?a[priority][gym]=0 &一個[優先] [俱樂部] = 1 & a [priority] [shop] = 1 & a [priority] [parking] = 1 & a [priority] [pubs] = 0 & a [priority] [pets] = 1 & a [priority] 0 &一個[人口] = 1 &一個[LAT] = nondef &一個[LNG] = nondef &一個[半徑] = 500 &一個[大學] = 0

  • 在這種情況下,我的網頁將獨立於以前的一個,它可能被刷新,或訪問不依賴於以前的腳本

但是,如果我想使用POST方法,我的URL看起來像/。 ../searching_objects.php,或者可能只有很少的變量通過URL來切換頁面。這種方法顯然將取決於以前的腳本。

根據這個問題哪種方法更好?哪一種更加用戶友好?(在這些情況下,優先考慮的是用戶友好嗎?)?是否有一些安全原因,爲什麼比其他人更喜歡一種方法?

回答

1

首先,使用GET。您正在獲取數據,而不是發佈數據。 POST應該用於更改服務器上的某些操作。

至於長URL的問題,有一些事情可以做:

  • 獨立的搜索頁面 - 提供不同的搜索類型不同的搜索頁面。
  • 使用URL重寫 - 利用.htaccessModRewrite將非常長的URL更改爲更短,更漂亮的URL。

此外,你可能想重新考慮如何佈置你的搜索項目(不是在可視性方面,但在數據管理方面)。考慮發佈一個不同的問題,解釋你如何佈置當前的搜索輸入,以及如何改進。

+0

感謝所有的建議 – Tommz 2013-03-01 17:51:16

1

你應該用GET去,因爲POST是爲了/從形式(如文章)創建的事情。搜索框通常被認爲是僞造正確的GET url的工具。此外,人們通常希望通過複製並粘貼一個URL來保存特定的搜索(請看Google如何管理它)。

沒有一個是真正用戶友好的。你應該不關心它。搜索網址從來沒有真正用戶友好。

如果你確保所有的輸入(如你總是應該),你不應該擔心安全。特別是在搜索上下文中,沒有太多的安全檢查正在進行,您只需從數據庫中提取數據並打印出來。只記得SQL注入(和打印方面的XSS),你應該沒問題。

+0

感謝所有的答案jeffrey – Tommz 2013-03-01 17:50:23