1

这是我在 JavaScript 中要做的事情。有没有办法在php中做到这一点?我正在开发一个需要此功能但不能使用 JavaScript 的项目。

setInterval ( "checkHistory()", 1000 );

function checkHistory() {
   if (oldHistLength != history.length) {
      removegateway();
      oldHistLength = history.length;
   }
}
4

2 回答 2

3

很抱歉,使用 PHP 无法做到这一点。您唯一的选择是在某处使用 JavaScript。

但是,您可以使用另一种技术实现我认为您正在尝试做的事情 - PHP 会话和请求 URI。

这涉及将用户访问的 URL 存储到一个变量(或者您可以使用 MySQL)中,该变量可以在当前会话中网站的任何位置引用。

这是一个(未经测试的)示例:

<?php
session_start();

// Retrieve/create the current list
if( isset($_SESSION['history']) ) {
    $history = $_SESSION['history'];
} else {
    $history = new array();
}

// Add the current URL to the history array
array_push($history, $_SERVER['REQUEST_URI']);

// Do anything else you want to here

// Store the array again
$_SESSION['history'] = $history;
?>
于 2012-05-02T16:22:20.260 回答
0

在您的代码中,您可以保留一个包含 $_SERVER['php_self'] 值的数组serialize(),并将其存储在会话变量中。但是,这对于您尝试做的事情可能还不够。我不确定是什么removegateway(),但这段代码是否试图阻止使用后退按钮?

如果您阻止页面被缓存,您可以将数组中的第二个到最后一个值与当前页面进行比较,如果它们匹配,则您检测到一个后退按钮。这只有在无法返回前端的上一页时才有可能。

阻止返回按钮通常被认为是一件坏事,因此最好重新考虑您做事的方式并提出更好的解决方案。

于 2012-05-02T16:22:56.563 回答