PHP和浏览器“后退”按钮 - 真正发生的事情

时间:2012-04-24 11:36:37

标签: php html

假设我的PHP页面确实是真实的'动作。
通过' REAL'我的意思是,执行数据库操作,编写文件,这样的东西,而不是发送HTML。

当我点击' Back'按钮到我的PHP页面,假设它是一个GET。

  • 这是否意味着我的PHP代码不一定会在所有浏览器上一直运行?

  • 如果我有一张图片,我想在每次请求该页面时刷新(特别是在' Back'),我该怎么办呢?

仅仅是我还是内部不喜欢javascript是正常的? (在我看来,对于那些首先无法正常工作的补丁,以及不是每个人都能让javascript正常工作,它似乎总是如此)

我不挑剔但是可以认为HTTP级解决方案在这里是最好的吗?

由于

2 个答案:

答案 0 :(得分:3)

通过POST加载的页面将导致浏览器要求用户重新提交信息以查看页面,从而导致该页面再次发生的操作。如果页面是通过GET请求的,并且在查询字符串中有变量,则会发生同样的事情,但是会无声地提示(不会再次提示用户)。

最好解决此问题的方法是使用POST/REDIRECT/GET pattern。我在一个关于processing payments that I wrote for Authorize.Net的例子中使用过它。希望这能指出你正确的方向。

答案 1 :(得分:2)

  

通过'REAL'我的意思是,执行数据库操作......

     

....假设它是一个GET。

然后你已经破坏了HTTP的基本原则:Get是幂等的,onlu POST,DELE和PUT应该在服务器上修改状态。

这是有充分理由的;使用浏览器导航元素(后退,前进)不需要浏览器引用GET或HEAD操作的原点,即使您告诉浏览器该页面是不可缓存的

  

如果我有图像,我想每次刷新

...然后使用带有随机生成的查询字符串的javascript通过window.onload方法获取图像。