重发信息问题

时间:2009-11-27 11:31:46

标签: php

我有一个用户可以搜索视频的搜索栏。 在搜索之后,用户继续点击并观看视频(来自搜索结果)..当用户点击浏览器的后退按钮时,它显示以下内容

  

要显示此页面,Firefox必须   发送重复任何信息   动作(例如搜索或订单   确认)已执行   早。

而不只是显示结果.. 我只想在用户点击时显示搜索结果..是否与缓存有关? thankx ..

4 个答案:

答案 0 :(得分:2)

最好将搜索表单的方法更改为get,或使用Post/Redirect/Get模式。

显示该消息,因为需要重新发送POST数据以重新呈现页面。

答案 1 :(得分:2)

如果您不想这样,可以使用GET而不是POST作为表单方法。

即,你应该使用这样的东西:

<form action"yourpage.php" method="get">
    ...
</form>

而不是:

<form action"yourpage.php" method="post">
    ...
</form>


这样,表单中使用的参数将在URL中发送,而不是通过POST发送,用户将能够:

  • 毫无问题地使用,独立于浏览器的缓存
  • 为结果页面添加书签(这很好^^)


我应该在理论上补充一点:

  • 当您要创建/修改数据时必须使用POST
  • 和GET必须在你想要的时候使用......好吧,获取,数据。

通过搜索表单搜索某些内容时,您的用户不会创建或修改数据:他们要求提供数据 - 因此,您的表单应使用GET方法。

答案 2 :(得分:1)

要解决此问题,请将现有top.location.reload()parent.location.reload();替换为top.location.href=top.location.href;

答案 3 :(得分:0)

不,这不是缓存问题。问题是您使用POST提交搜索表单。有几种解决方案。

  • 更好的方法是更改​​要使用GET的表单。您可以通过设置其method属性

    来实现
    <form method="get" action="search.php">
    
  • 另一方面,如果您担心搜索查询会花费太长时间,您可以使用某种形式的ID保存搜索,然后重定向到获取此搜索ID的页面并显示结果。重定向可以用

    完成
    header('Location: show_search.php?id=' . $searchId);