为什么我们在发送邮件请求后需要重定向?

时间:2016-07-07 07:46:41

标签: php forms symfony

页面上有3种表格更新数据:第一种是用户个人资料,第二种是密码重置,第三种是更改电子邮件。我将表单发送到控制器并重定向到同一页面。项目组负责人要求删除这些重定向,并说人们在提交表单后不刷新页面,重定向只会加载服务器... 我可能错了,但重定向总是应该在发送POST请求后完成。关于通过AJAX制作所有表格的建议被拒绝了。如果我没有弄错的话,我如何能够胜任地证明需要重定向?

3 个答案:

答案 0 :(得分:2)

需要在提交表单后重定向,我现在应该这样做:

  1. 您提交表单
  2. 在DB
  3. 中保存详细信息
  4. 从控制器返回视图。
  5. 在上述情况下会出现问题,当提交表单并将普通视图返回给用户而不重定向页面时,在视图用户尝试刷新页面上他将获得以下警告信息。

      

    您要查找的页面使用了您输入的信息。   返回该页面可能会导致您重复执行任何操作。   你想继续吗?

    这意味着浏览器将再次发送在先前请求中处理过的数据,因此在服务器端处理的数据可能存在一些歧义。

    这可能是在提交和处理表单后重定向页面的原因。

答案 1 :(得分:2)

您要寻找的是 Post-Redirect-Get 模式 您可以在此处阅读原始文章:http://www.theserverside.com/news/1365146/Redirect-After-Post

它暴露了所有的动机;简而言之,模式阻止双重提交(因为页面很慢,因此用户松散耐心)并允许浏览器安全地刷新(最​​后)页面,而不会冒重新提交数据的风险(或者至少具有警告你重新提交数据。)

答案 2 :(得分:1)

重定向仅用于清除所有发布数据。如果您选择不重定向,则用户在使用后退或前进按钮时会遇到一些不便。他将被要求再次发送帖子数据。