1

我的页面中有一个包含 3 列的 html 表格,每一列都包含这样的表格

<form id="filter" method="get" action="advanced_search_result.php">
<input type="hidden" value="Aurum" name="keywords">
<select onchange="this.form.submit()" name="maxnumber">
<option value="">10</option>
<option selected="selected" value="25">25</option>
<option value="50">50</option>
</select>
</form>

下拉选择的结果是重新加载页面,其中包含类似“advanced_search_result.php?keywords=Aurum&maxnumber=25”的 url,我的问题是....这些查询字符串参数是如何构造的?我查看了 php 文件,但无法弄清楚。我想要做的是在发生此操作时向 url 添加另一个参数。

4

3 回答 3

3

这与php完全无关。您在get表单上使用了一种方法,因此所有表单字段名称/值都作为查询参数填充到 url 中。

如果页面是用 java、asp、ruby、perl 甚至是普通的静态 html 构建的,就会发生这种情况。

于 2013-03-12T16:24:43.740 回答
2

这是HTTP协议的默认行为,它有 4 种可能的操作: GETPUTPOSTDELETE。它不是执行动作的语言。

关于 REST 和使用 HTTP 协议的最佳解释是这里这篇 Wikipedia 文章还包含有关您可以使用 HTTP 执行的不同类型请求的更多信息。

底线 是创建该格式 URL 的协议。与所有现代 Web 语言一样,PHP 具有 HTTP 包装器方法,这些方法知道如何从其 URL 表示中提取参数,例如$_GET数组、$_POST数组或$_REQUEST数组。

你应该知道的一件事 幂等用简单的英语来说,这意味着使用正确的请求类型来执行操作,以允许浏览器以更有效的方式完成其工作。您不会使用POST来简单地显示数据库内容,也不会使用GET来更新数据库。为什么?在这里阅读更多。

幂等性解释

幂等方法和 Web 应用程序

方法 PUT 和 DELETE 被定义为幂等的,这意味着多个相同的请求应该与单个请求具有相同的效果(注意幂等是指请求完成后系统的状态,所以当服务器采取的动作(例如删除记录)或后续请求返回的响应码可能不同,系统状态每次都相同)。

被规定为安全的方法 GET、HEAD、OPTIONS 和 TRACE 也应该是幂等的,因为 HTTP 是一种无状态协议。1 相比之下,POST 方法不一定是幂等的,因此多次发送相同的 POST 请求可能会进一步影响状态或导致进一步的副作用(例如金融交易)。

在某些情况下,这可能是可取的,但在其他情况下,这可能是由于意外,例如当用户没有意识到他们的操作将导致发送另一个请求,或者他们没有收到足够的反馈表明他们的第一个请求是成功的。虽然 Web 浏览器可能会在某些情况下显示警告对话框以警告用户,在某些情况下重新加载页面可能会重新提交 POST 请求,但通常由 Web 应用程序来处理不应多次提交 POST 请求的情况。

请注意,协议或 Web 服务器不强制执行方法是否具有幂等性。完全可以编写一个 Web 应用程序,其中(例如)数据库插入或其他非幂等操作由 GET 或其他请求触发。但是,如果用户代理认为重复相同的请求是安全的,而实际上并非如此,那么忽略此建议可能会导致不良后果。

于 2013-03-12T16:25:33.580 回答
0

正如其他人所说,参数的构造GET与PHP无关。

除此之外,如果你想添加一个新的参数,只需在表单中添加一个新的输入:

<input type="text" name="param_name" value="the_value" />
于 2013-03-12T16:27:19.140 回答