我想让用户在提交表单后能够返回到带有分页控件的上一页。通常我使用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。
然后在帖子发布后,将用户重定向到他们的上一个页面,也许是在短暂延迟后查看感谢消息。