【问题标题】:Change form submission from GET to POST PHP将表单提交从 GET 更改为 POST PHP
【发布时间】:2017-01-21 05:59:56
【问题描述】:

我在大型网站上工作,其中包含汽车过滤功能。我将解释表单过滤的工作原理:

所以用户选择过滤器选项、车号等然后按 go,这会向服务器 (php) 发出 GET 请求我已经将每个变量从 $_GET 更改为 $_POST 并更改了表单提交方法,问题是当表单返回的项目数量可能超过 2 页,因此当用户单击第二页或第三页时,所有此代码所做的就是将页码添加到请求中,如下所示:www.example.com/GET_REQUEST_VARIABLES -> www.example .com/pagenumber&GET_REQUEST_VARIABLES。这样服务器返回第二页项目等等。

但是当我发送 post 请求时,它没有保存在 url 中,所以服务器不知道要返回什么,

你能帮我解决这个问题吗?

如果您提出问题我可以更好地解释我不知道我是否在这里解释清楚

【问题讨论】:

  • 您是说当您转到第 2 页时,您会丢失保存在 $_POST 中的所有选项吗?或者当您转到第 2 页时,没有第 2 页,因为页码未附加到 URL?
  • 当我转到第 2 页时,服务器会丢失我在使用 post 之前发送的所有变量,它会附加页码,但不会添加从 post 发送的变量,因为它是另一个请求
  • 您可以将 $_POST 变量保存在 $_SESSION 变量中吗?这将允许他们从一个页面到另一个页面。否则,听起来您每次都需要再次发布信息。我会推荐 $_SESSION。
  • 我也教过它,但不知道这是不是个好主意,我是前端开发人员,但我的公司没有后端开发人员,所以我也做后端工作:)
  • @Native Coder 下面的答案很中肯。除非数据是敏感的,否则在这里使用 $_GET 就可以了。

标签: php post get http-post http-get


【解决方案1】:

您使用 POST 而不是 GET 是否有原因?在这种情况下,使用 GET 对 SEO 更友好。而且由于您没有在表单提交中发送敏感数据,因此我看不到使用 POST 的理由。使用 GET 的另一个优点是您可以直接链接到搜索结果。 (例如,如果我搜索本田飞度,并想向我的妻子展示,我有一个指向该页面的直接链接)

(查看HERE 以了解 POST 和 GET 之间差异的要点说明)。

要回答您的其他问题,POST 不使用 URL。只有 GET 可以所以如果您需要将表单数据序列化为 URL,则需要使用 GET。由于您将表单提交方法更改为 POST,因此您还需要更改服务器端逻辑以适应。如果不知道您使用的是什么服务器端技术,我就没有多大用处。假设你使用的是 PHP,你可以开始 here

如果您不喜欢 MAN 页面,只需将 PHP 中的所有 $_GET['fieldName'] 调用更改为 $_POST['fieldName']

您始终可以发布第一页,并使用 GET ONLY 作为页码。在表单中你会这样做

    <form method="post" action="www.foo.com/search?page=1">

然后您可以将您的 POST 变量存储到 $_SESSION 超级全局变量中。繁荣。发布的分页。使用 PHP 即时渲染它会是一件轻而易举的事

$nextPageURL = 'www.foo.com/search?page=' . $_GET['page'] + 1;
if($_GET['page'] !== '0'){
    $lastPageURL = 'www.foo.com/search?page=' . $_GET['page'] - 1;
}

【讨论】:

  • 我使用 post 请求的原因是 get 请求有时变得太大,服务器返回“big url”错误
  • 是的,你是对的,但是如果将来请求变得更大怎么办?
  • 如果它成为一个问题,你总是可以再次增加它的长度。
  • 我不会。你知道,我觉得这个限制是相当大的。有什么办法可以告诉我搜索生成的 URL?我觉得必须有一种方法可以缩短它....
  • 我怎么给你看?我不能在这里发布它太大了:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多