我的页面中有一个包含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&amp; maxnumber = 25”的网址重新加载的页面,我的问题是......如何构建这些查询字符串参数?我已经浏览了php文件,无法弄明白。我想要做的是在发生此操作时向url添加另一个参数。
答案 0 :(得分:3)
这与php完全无关。您在表单上使用get
方法,因此所有表单字段名称/值都作为查询参数填充到网址中。
如果页面是用java,asp,ruby,perl甚至是普通的静态html构建的,就会发生这种情况。
答案 1 :(得分:2)
这是 HTTP 协议的默认行为,它有4种可能的操作: 获取, PUT ,发布,删除。它不是执行行动的语言。
关于REST和使用HTTP协议的最佳解释是HERE。 This Wikipedia article还包含有关您可以使用HTTP执行的不同类型请求的更多信息。
底线
它是以该格式创建URL的协议。与所有现代Web语言一样,PHP具有HTTP包装器方法,这些方法知道如何从其URL表示中提取参数,例如$_GET
数组,$_POST
数组或$_REQUEST
数组。 / p>
你应该知道的一件事 Idempotence 简单来说,这意味着对行动使用正确的请求类型,以允许浏览器以更有效的方式完成工作。您不使用 POST 来简单地显示数据库内容,也不使用 GET 来更新数据库。为什么?阅读更多HERE。
Idempotence解释
幂等方法和Web应用程序
方法PUT和DELETE被定义为幂等的,这意味着多个相同的请求应该具有与单个请求相同的效果(注意,幂等性是指请求完成后系统的状态,因此当操作服务器时采取(例如删除记录)或它返回的响应代码在后续请求中可能不同,每次系统状态都是相同的。)
方法GET,HEAD,OPTIONS和TRACE,被规定为安全的,也应该是幂等的,因为HTTP是无状态协议。1 相反,POST方法不一定是幂等的,因此多次发送相同的POST请求可能会进一步影响状态或导致进一步的副作用(例如金融交易)。
在某些情况下,这可能是可取的,但在其他情况下,这可能是由于事故造成的,例如当用户没有意识到他们的行为将导致发送另一个请求,或者他们没有收到足够的反馈意见时第一次请求成功。虽然Web浏览器可能会显示警告对话框以警告用户在某些情况下重新加载页面可能会重新提交POST请求,但通常由Web应用程序来处理不应多次提交POST请求的情况。 / p>
请注意,协议或Web服务器不强制执行方法是否是幂等的。完全可以编写一个Web应用程序,其中(例如)GET或其他请求触发数据库插入或其他非幂等操作。但是,如果用户代理假定重复相同的请求是安全的,则忽略此建议可能会导致不良后果。
答案 2 :(得分:0)
正如其他人所说,GET
参数的构造与PHP无关。
除此之外,如果您想添加新的参数,只需在表单中添加一个新输入:
<input type="text" name="param_name" value="the_value" />