所以我读过你应该使用POST来修改任何可以修改数据的东西。
E.g。
BAD
<a href="edit.php?id=12">Edit</a>
不可
<form action="edit.php" action="post"><input type="hidden" name="id" value="12" /><button type="submit">Edit</button></form>
现在显然第一次更简洁,但它会被认为是错误的方式。
现在通常额外的标记对于一个问题来说并不是太糟糕,但是说我可能会显示这个标记20次,或者更多。然后还有一个问题是“它应该有一个字段集和表单的图例元素。”
一般的最佳做法是什么?或者我把这件事拿回来了?
答案 0 :(得分:3)
这取决于访问edit.php?id=12
的内容。它实际上是否会改变某些内容,还是会显示另一个允许您编辑内容的页面?
如果它只显示允许您编辑内容的页面,那么GET
就可以了。如果它实际上正在改变某些东西,那么POST
是正确的,语义的事情,你必须处理标记有点臃肿的事实。
修改数据的GET
请求的实际问题是它们可能会出现错误 - 想想书签,后退/前进按钮(如果您尝试重新提交{{1},许多浏览器会显示警告请求这种方式),搜索引擎跟随链接等。
答案 1 :(得分:2)
我总结这个的最好方法是两个简单的列表:
关于您的具体问题,我推断您希望将用户带到可以编辑ID = 12的某个页面的页面。如果是这种情况,编辑页面的链接应该是带有GET的简单HREF(您可能需要考虑使用.htaccess重写来美化您的网址,使其看起来像edit/12
而不是edit.php?id=12
) 。编辑页面本身应该是一个发送POST数据的表单。
答案 2 :(得分:1)
通常,当将 lot 数据传递给要处理或存储的服务器时,使用POST是一个好主意,因为GET的下限低于POST。 POST还具有对用户相对隐藏的额外好处,除非在传输期间未加密。
如果你传递的是简单的值,就像上面传递的那样,那么使用GET不是问题(除非你喜欢光滑的URL,那就是..)
答案 3 :(得分:1)
好的,你有理由不正确使用GET。
我们举一个例子。假设您有一个脚本,根据单选按钮提交递增或递减计数器。
让我们说:
www.example.com/index.php?var=inc
导致增量,www.example.com/index.php?var=dec
导致减量。
问题在于,如果用户意外地刷新,转发或为您的脚本添加书签,您的计数器就会疯了!
这是您应该更喜欢POST的经典案例。
另一种情况显然是在提交密码等敏感信息时。
答案 4 :(得分:0)
错误的是发布一些表格作为GET,就像它制作长网址一样,用户可以将其加入书签,这是一个糟糕的举动。
这样的事情会不会很好
<form>
<input type="text" name="firstname"/>
<input type="text" name="lastname"/>
...
</form>
还有良好的表单政策我建议您查看POST/Redirect/GET policy。