使用PHP检测历史记录更改?

时间:2012-05-02 16:02:32

标签: php javascript

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

setInterval ( "checkHistory()", 1000 );

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

2 个答案:

答案 0 :(得分:2)

很抱歉,说使用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;
?>

答案 1 :(得分:0)

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

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

预防后退按钮通常被认为是一件坏事,所以最好重新考虑一下你做事的方式并提出更好的解决方案。