0

我在网站上有表格,用于搜索数据库中的对象。问题是用户可以搜索许多属性,所以我不确定我应该使用 POST 方法将值传递给其他脚本,还是应该将所有变量放在 URL 中并使其他脚本独立且仅可访问关联。

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

/.../searching_objects.php?a[priority][gym]=0&a[priority][clubs]=1&a[priority][shop]=1&a[priority][restaurants]=1&a[priority][pubs]=0&a [priority][pets]=1&a[priority][parking]=0&a[persons]=1&a[lat]=nondef&a[lng]=nondef&a[radius]=500&a[college]=0

  • 在这种情况下,我的页面将独立于前一个页面,它可以被刷新,或者不依赖于以前的脚本来访问

但如果我使用 POST 方法,我的 URL 看起来像 /.../searching_objects.php,或者可能有几个变量通过 URL,用于切换页面。这种方法显然取决于以前的脚本。

根据这个问题,哪种方法更好?哪一个对用户更友好(在这些情况下是否优先考虑用户友好?)?是否有一些安全原因为什么更喜欢一种方法而不是另一种方法?

4

2 回答 2

1

You should go with GET because POST is meant to post / create things from a form (like an article). A search box is usually considered to be just a tool to forge the correct GET url. Also people usually want to save specific searches just by copy and pasting an URL (just look at how Google managed it).

None of them is really user friendly. And you should just don't care about it. Search urls are never really user friendly.

If you secure all the inputs (like you always should) you shouldn't worry about security. Particularly in the search context there isn't that much security checks going on, you just have to fetch data from the database and print it. Just remember of SQL Injections (and XSS on the printing side) and you should be fine.

于 2013-03-01T17:35:12.080 回答
1

首先,使用 GET。您正在获取数据,而不是发布数据。POST 应该用于更改服务器上某些内容的操作。

对于长 URL 问题,您可以做一些事情:

  • 分离您的搜索页面 - 为不同的搜索类型提供不同的搜索页面。
  • 使用 URL 重写 - 利用.htaccess并将ModRewrite一个很长的 URL 更改为更短、更漂亮的 URL。

此外,您可能需要重新考虑如何布置搜索项(不是在可视性方面,而是在数据管理方面)。考虑发布一个不同的问题,解释您如何布置当前的搜索输入,以及如何改进它。

于 2013-03-01T17:40:19.387 回答