我希望用户能够在提交表单后返回带有分页控件的上一页。通常我使用post但这不会传递URL。
是否建议使用get代替?
答案 0 :(得分:1)
这取决于许多事情,主要是您通过表单传递的内容。
通常,如果表单中有textarea,通过GET发送是一个坏主意,因为您更有可能达到URL的最大字符数限制。 显然,如果你传递一个文件,那么它需要POST。 哦,显然如果它是敏感数据(例如用户名/密码),那么使用GET不是一个好主意。
除此之外,我认为使用GET没有任何害处,只要你在任何地方使用它之前“清理”数据。
如果使用GET不是一个选项,那么您可以做的一件事就是使用POST,但是如果在提交表单后使用了分页/面包屑,则可以在COOKIE或SESSION变量中保存所有内容以便在上一页上检索
答案 1 :(得分:1)
对Alex和tandu的评论进行了一些扩展:
发送数据时应使用POST,这将改变服务器上的状态。您应该在请求数据时使用GET,或者执行一些其他操作以使服务器状态保持不变。
所以,是的,使用POST提交表单是正确的,在这种情况下不建议使用GET。
然后在帖子将用户重定向到他们的上一页后,可能会在短暂的延迟后查看感谢信息。
答案 2 :(得分:1)
没有什么可以阻止您在表单中保存分页信息。例如,你在:
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']);
显然,我已经跳过很多东西,比如验证,所以不要忘记把它放进......