使用PHP在Iphone中检测浏览器刷新

时间:2020-07-04 05:36:23

标签: php iphone

我正在尝试检测我的网站页面的浏览器是否已刷新,以便可以执行一些逻辑。显然,它在除Iphone之外的所有其他平台上都可以工作。任何帮助将不胜感激。以下是我正在使用的php脚本。

$pageWasRefreshed = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0';
 
if($pageWasRefreshed ) {
  //do something because page was refreshed;
} else {
  //do nothing;
}

1 个答案:

答案 0 :(得分:1)

看起来Safari在刷新后没有发送Cache-Control标头(这可能有多种原因)。依靠浏览器来通知您刷新标头不是一个好主意,因为浏览器可能会随着时间而变化。

对此问题的更好解决方案是使用会话,因为无论使用哪种浏览器,它都可以工作。

session_start(); //place it at the start of the PHP document, before anything except headers is send to browser

if (!isset($_SESSION["refresh"]))
    $_SESSION["refresh"] = 0;
$_SESSION["refresh"] = $_SESSION["refresh"] + 1;

if ($_SESSION["refresh"] > 1)
{
    //you refreshed the page!
}
else
{
    //first time
}

编辑:针对此问题的其他解决方案是:

  • 使用cookie(在服务器端)。如果用户禁用了cookie,则此方法将无效。
  • 在客户端使用javascript代码。在这里,这取决于问题-通过javascript解决方案有时可能会变得不必要地复杂(有时需要)。