繁体   English   中英

不确定如何在PHP网站中构造URL

[英]Unsure how URL is constructed in php website

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

<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>

下拉选择的结果是重新加载URL的页面,例如“ advanced_search_result.php?keywords = Aurum&maxnumber = 25”,而我的问题是....如何构造这些querystring参数? 我已经查看了php文件,但无法弄清楚。 我想做的就是在发生此操作时向网址添加另一个参数。

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

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

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

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

底线是协议以这种格式创建URL。 与所有现代网络语言一样,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或其他请求触发数据库插入或其他非幂等动作。 但是,如果用户代理认为重复相同的请求是安全的,则忽略此建议可能会导致不良后果。

就像其他人所说的那样, GET参数的构造与PHP无关。

除此之外,如果要添加新的参数,只需向表单添加新的输入即可:

<input type="text" name="param_name" value="the_value" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM