2013-03-01 81 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