发布vs获取URL参数?

时间:2012-01-09 16:59:59

标签: php html

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

是否建议使用get代替?

3 个答案:

答案 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']);

显然,我已经跳过很多东西,比如验证,所以不要忘记把它放进......