使用 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;
}

看起来 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,这将不起作用。
  • 在客户端使用JavaScript代码。这里取决于问题 - 通过javascript的解决方案有时可能不必要地复杂,有时需要。

最新更新