post vs get获取URL参数


post vs get for URL params?

我想让用户在提交表单后能够返回到带有分页控件的上一页。通常我使用post,但这不会在URL中传递。

是否建议使用get?

没有什么可以阻止您在表单中保存分页信息。例如,您位于:

http://mysite/list.php?page=3&maxperpage=50

页面上的链接可以将用户重定向到

http://mysite/edit.php?id=8475&page=3&maxperpage=50

将页面和maxperpage作为隐藏控件保存到表单中,每次显示表单时重新加载它们(以防回发错误)

<input type="hidden" name="page" value="<?php echo $_REQUEST['page']; ?>" />
<input type="hidden" name="maxperpage" value="<?php echo $_REQUEST['maxperpage']; ?>" />

然后,当回发完成时,使用_POST隐藏字段重定向到上一页:

header('location: http://mysite/list.php?page='.$_POST['page'].'&maxperpage='.$_POST['maxperpage']);

很明显,我跳过了很多东西,比如验证,所以不要忘记在…

中放一些

这取决于许多事情,主要是您通过表单传递的内容。

一般来说,如果你在表单中有一个文本区域,那么通过GET发送是个坏主意,因为你更有可能达到URL的最大字符限制。显然,如果您传递一个文件,那么它需要POST。哦,很明显,如果是敏感数据(例如用户名/密码),那么使用GET不是一个好主意。

除此之外,我认为使用GET没有害处,只要在任何地方使用数据之前都要"清理"数据。

如果使用GET不是一个选项,那么您可以使用POST,但将所有内容保存在COOKIE或SESSION变量中,以便在提交表单后使用分页/面包屑时在上一页检索。

扩展一下Alex和tandu的评论:

发送数据时应使用POST,这将更改服务器上的状态。当您请求数据或执行其他将保持服务器状态不变的操作时,应该使用GET。

所以,是的,使用POST提交表单是正确的,在这种情况下不建议使用GET。

然后在帖子发布后,将用户重定向到他们的上一个页面,也许是在短暂延迟后查看感谢消息。