繁体   English   中英

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

[英]Detect browser refresh in Iphone using PHP

我正在尝试检测我的网站页面的浏览器是否已刷新,以便可以执行一些逻辑。显然它在除 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 header (这可能有几个原因)。 依靠浏览器通过 header 通知您刷新不是一个好主意,因为浏览器可能会随着时间而改变。

解决此问题的更好方法是使用 session,因为无论浏览器如何,它都可以工作。

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
}

编辑:这个问题的其他解决方案是:

  • 使用 cookies(在服务器端)。 如果用户禁用了 cookies,这将不起作用。
  • 在客户端使用 javascript 代码。 这取决于问题 - 通过 javascript 的解决方案有时可能不必要地复杂,有时需要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM