如何禁用直接输入到HTML?

时间:2013-02-22 23:06:23

标签: php javascript html url

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

现在我想要的是用户无法通过url直接转到html2。他必须通过html1中swf中的链接点击它。有没有办法实现这个目标?

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

由于

编辑:

在John的回答之后,我继续尝试了他的建议,但我永远无法访问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”

6 个答案:

答案 0 :(得分:3)

专业解决方案:
创建受保护的目录并在目录中创建.htaccess文件,并将所有嵌入和部分文件复制到目录中 这个目录无法访问whit获取网址 但您可以包含文件whit php includerequire方法 .htaccess内容:

deny from all

答案 1 :(得分: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
   [...]

file2的

 <?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.

使用引荐来源检查的事情通常会失败(某些浏览器/防火墙阻止该变量)。

答案 2 :(得分:0)

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

如果一个偷偷摸摸的用户知道发生了什么事情,他们仍然可以解决这个问题,但对大多数观众来说这应该没问题。

答案 3 :(得分: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

这样可以防止直接访问

答案 4 :(得分:0)

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

答案 5 :(得分:0)

很好用html你有两个选择,一个是cookie,另一个是html5中的本地存储

localStorage.hasClick = true;

alert(localStorage.hasClick);

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

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

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