Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用哪种方法?_Php_Url_Post_Get - Fatal编程技术网

Php 使用哪种方法?

Php 使用哪种方法?,php,url,post,get,Php,Url,Post,Get,我在网站上有一个表单,用于搜索数据库中的对象。问题是,用户可以使用许多属性进行搜索,所以我不确定是否应该使用POST方法将值传递给其他脚本,还是应该将所有变量都放在URL中,并使其他脚本独立且仅通过链接即可访问 例如,如果我使用GET方法,URL将如下所示: /…/search_objects.php?a[priority][gym]=0&a[priority][clubs]=1&a[priority][shop]=1&a[priority][restaurants]=1&a[priority]

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

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

/…/search_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[persones]=1&a[lat nondef&a[lng]=nondef&a[radius]=500&a[college]=0

  • 在这种情况下,我的页面将独立于上一个页面,可以刷新,也可以不依赖于上一个脚本来访问
但如果我使用POST方法,我的URL看起来就像/../search_objects.php,或者可能有几个变量通过URL来切换页面。此方法显然依赖于以前的脚本


针对这个问题,哪种方法更好?哪一个更人性化(在这些情况下,是否优先考虑人性化?)?为什么选择一种方法而不选择另一种方法,有一些安全原因吗?

您应该选择GET,因为POST的目的是从表单(如文章)发布/创建内容。搜索框通常被认为只是伪造正确GET url的工具。此外,人们通常希望通过复制和粘贴URL来保存特定的搜索(看看谷歌是如何管理它的)

它们都不是真正的用户友好型。你不应该在意它。搜索URL从来都不是真正的用户友好型


如果您保护了所有的输入(就像您一直应该做的那样),那么您就不必担心安全性。特别是在搜索上下文中,没有进行太多的安全检查,您只需从数据库中获取数据并打印它。只要记住SQL注入(以及打印端的XSS),您应该会很好。

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

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

  • 分离搜索页面-为不同的搜索类型提供不同的搜索页面
  • 使用URL重写-使用
    .htaccess
    ModRewrite
    将很长的URL更改为更短、更漂亮的URL
此外,您可能需要重新考虑如何布局搜索项目(不是从可视化角度,而是从数据管理角度)。考虑一个不同的问题,解释你如何安排你当前的搜索输入,以及如何改进它。