【问题标题】:Detect if page was refreshed using PHP [duplicate]检测是否使用 PHP 刷新了页面 [重复]
【发布时间】:2019-01-25 00:21:10
【问题描述】:

我正在尝试使用 PHP 和所有浏览器检查页面是否已刷新。

这是我尝试做的:

if( isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0' ) {
    // page was refreshed
}

但它不适用于谷歌浏览器。

我也尝试设置 SESSION - 但如何销毁此会话以便用户仍然可以访问该页面但不能刷新它?

我还尝试了PHP: Detect Page Refresh的其他几个答案

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 也许无关紧要,但我能问一下为什么吗?也许您正在以错误的方式处理某些事情。我可能完全错了,我的推定也没有冒犯的意思。只是看起来有点奇怪,因为无论用户如何让您的系统调用请求,它都应该得到适当的处理。
  • @James - 好吧。我正在使用链接缩短器,并且我希望用户仅来自缩短的链接 - 我已经通过 HTTP_REFERER 标头完成了该操作。现在我也想防止访客刷新。
  • 因此,如果他们以除通过较短 URL 以外的任何方式访问您的网站,您是否希望他们无法使用您的网站?对你和他们似乎有点不公平。另一种想法是将所有 URL 重定向到较短的 URL。与 htaccess 一样。然后人们最终会将较短的内容添加为书签并分享,因为这是他们习惯看到的内容。
  • Javascript 可能是一个更好的选择...stackoverflow.com/questions/5004978/… ...在 PHP 中检测页面重新加载没有可靠的方法...因为 HTTP 协议是无状态的。
  • 当然,但是您在 Javascript 中要求 PHP 大声笑,这是一个完全不同的问题。你现在已经排序了。剩下的唯一问题是您有一个问题要求仅在 PHP 中完成此操作,但仅在 Javascript 中使用解决方案来回答。有很多问题是用 JS 完成的(这会使这个问题成为骗局)。这就是为什么改变你的问题范围并不理想:)

标签: javascript php


【解决方案1】:

感谢 Raymond Nijland 建议使用 JavaScript。

也感谢所有试图提供帮助的人。

我是这样做的:

<?php
$RedirectURI = "http://example.com";
?>
<html>
<head>
<noscript>
<meta http-equiv="refresh" content="0; url=<?php echo $RedirectURI; ?>" />
</noscript>
<script>
if (!window.performance) {
    window.location = "<?php echo $RedirectURI; ?>";
}
if (performance.navigation.type == 1) {
    window.location = "<?php echo $RedirectURI; ?>";
}
</script>
</head>
</html>

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 2010-10-02
    • 2018-10-27
    • 2014-03-15
    • 2012-03-11
    • 1970-01-01
    • 2015-03-18
    • 2011-12-22
    相关资源
    最近更新 更多