1

假设我有两个名为 html1 和 html2 的 html 文件。html1 包含一个嵌入的 swf 文件。

现在我想要的是用户不能直接通过 url 访问 html2。他必须通过 html1 中 swf 中的链接单击它。有没有办法做到这一点?

如果在 html 中不可能,是否可以在 php 中使用?

谢谢

编辑:

在约翰回答后,我继续尝试他的建议,但我永远无法访问 file2.php,即使我以前去过 file1.php。它不断将我重定向回file1.php,即使它不应该这样做。

我来自 file1.php 的代码

//file1.php
<?php
session_start();
$_SESSION['enableAccessTill']=strtotime("+5 minutes");
?>

这是file2.php

//file2.php
<?php
session_start();
if(!isset($_SESSION['enableAccessTil'])||$_SESSION['enableAccessTil']<time())
{
header("Location: indexFLA.php");
exit;
}
?>

我可能做错了什么?

找到它,这是由于拼写错误 - “enableAccessTil”和“enableAccessTill”

4

6 回答 6

3

专业解决方案:
创建受保护的目录并.htaccess在目录中制作文件并将所有嵌入和部分文件复制到目录中。
此目录无法通过获取 url 访问。
但您可以包含文件 whit phpincluderequire方法。
.htaccess 内容:

deny from all
于 2013-02-22T23:30:02.763 回答
2

这在纯 html 中是不可能的。一个简单的方法是 php 在文件 1 中设置一个会话变量,并在文件 2 中测试用户已经到文件 1。

文件1:

 <?php
   session_start();
   $_SESSION['enableAccessTill'] = strtotime("+5 minutes"); //set the time here till when the user has access
   [...]

文件2

 <?php
  session_start();
  if(!isset( $_SESSION['enableAccessTill'] ) || $_SESSION['enableAccessTill'] < time() ){ //If time is expired
    header("Location: file1.php"); //redirect user to the first file
    exit;
  }
[...] //continue your script here.

推荐人检查的事情通常会失败(一些浏览器/防火墙阻止了该变量)。

于 2013-02-22T23:12:17.477 回答
0

根据您描述的选项,将 html2 设置为php脚本并检查引用者是否为 html1 文件听起来最合理。如果是这种情况,脚本应该显示正常的 html1 内容,否则会显示错误消息。

如果他们知道发生了什么,鬼鬼祟祟的用户仍然可以绕过这个问题,但对于大多数观众来说应该没问题。

于 2013-02-22T23:09:48.783 回答
0

可以用php。

在 index.php 你必须写

<?php
define('START', true);
include 'file.php';

在 file.php 需要写

<?php defined('START) or die('Direct access!!'); ?>
<embed> your swf file embed

这样你就可以防止直接访问

于 2013-02-22T23:10:57.710 回答
0

您可以通过使用会话变量来使用 PHP。在 html1 中启动会话。检查 html2 中的会话。如果存在,则显示 html2。如果没有,请不要显示 html2。无论哪种情况,都在 html2 中销毁会话。

于 2013-02-22T23:12:42.227 回答
0

使用 html 是可行的,您有两种选择,一种是 cookie,另一种是 html5 中的本地存储

localStorage.hasClick = true;

alert(localStorage.hasClick);

http://www.html5rocks.com/en/features/storage

但显然直接的解决方案是 php / c# / ruby​​ / etc...

//当我说html时,我指的是仅使用客户端html/javascript

于 2013-02-22T23:18:45.423 回答