0

我想知道是否有一种方法可以点击我网站上的链接进行访问,但不能直接访问。有可能吗,如果有,怎么做?脚本?

4

3 回答 3

1

这在绝对防止机器人或自动程序的意义上是不可能的。

有两种可能:

  • 检查 HTTP 引荐来源网址。一些浏览器会在其中发送以前的 URI。但请注意,用户可能已禁用此功能(例如,我将其关闭)。

  • 强制用户查看第一个站点。如果用户在没有访问过第一个站点的情况下加载了第二个站点,则将他重定向到一个虚假的 URI 或其他。

第二点的示例:

第一个.php:

<?php
session_start();
$_SESSION['firstPageDate'] = time();

第二个.php:

<?php
session_start();
$firstPageDate = isset($_SESSION['firstPageDate']) ? $_SESSION['firstPageDate'] : 0;
$maxDiff = 60 * 3; // The user has 3 minutes for clicking the link

if (time() - $firstPageDate > $maxDiff) {
  header('HTTP/1.1 401 Unauthorized', true, 401);
  exit('No access');
}
于 2013-09-25T20:32:39.797 回答
0

当然,您只需要阻止默认事件。例如,下面是使用 jQuery 完成的方法:

$('#myLink').on('click', function (event) {
    event.preventDefault();

    // ... something else
});

编辑我相信我误读了这个问题并且完全倒退了。我现在认为问题是“我可以拥有一个用户可以与之交互但不能直接访问的链接(例如,通过输入 url)。” 答案是“是的”。

<a href="#" id="myLink">Click me!</a>

脚本:

$("#myLink").on("click", function (event) {
    // either set the window.location for redirect or
    // perform some other operation.
});

单击链接将产生所需的效果。如果您确实想访问无法从外部访问的目标页面,则需要与您的服务器协调以设置某种身份验证。

于 2013-09-25T20:32:32.383 回答
-1

不,正如您所描述的那样,这是不可能的。

于 2013-09-25T20:30:11.317 回答