是的,在技术和概念上有所不同。 这种差异如何影响你,取决于处理请求的申请服务器(当然还有你的选择)。
<>技术差异:
在大多数应用服务器中,参数的源头(URL或 FORM)确定其最终位置。 在PHP中,url参数分别载于_GET
,并在_$_POST
上形成超级全球化。 如果你不关心技术差异,则为方便起见,有一份<代码>_REquestST超级全球化。
<>可见度>
区分两种类型的申请参数最符合逻辑:
- Such that are required to render a page, i.e. they don t change anything in the database if you send the request again.
- Such that change the database, i.e. are destructive (they are the reason why browsers ask if you are okay with posting a page again if you hit refresh).
前者称为dempotent,应通过GET转让。 一个很好的例子就是搜身或创记录。 不管你被点击的频率如何,该数据库始终不.。
The other kind of parameter is data that should be stored in the DB. It would be destructive in the sense that it actually changes database contents. These parameters should be transferred via POST.
这样,这也是决定贵表格是否应当为method=“GET”>
或method=“POST”
的好办法: 每当表格输入数据库时,使用通用公平贸易法表格。 例如,用户查询<>/em>表格应为“GET”,用户喜好表格应为“POST”。
现在,你可以说,就你而言,创纪录的ID是多余的,但以你的形式提供的其他信息渠道不是这样。 在该案中,我发现使用最有说服力。
<form action="mysite.com/index.php?id=1234" method="POST">
<!-- ...more inputs here -->
</form>
since a GET mysite.com/index.php?id=1234
would request that very record.
没有必要这样做,当然,你可以将国际发展研究中心列为隐蔽的投入。
Two things you should be aware of, though:
- In this case the HTTP server logs would not show evidence of which record the user posted to (if you care for that).
- This kind of separation only works for POST forms. GET forms ignore the parameters in
action
attribute, you must specify all of them in as hidden input fields.