假设我有两个名为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”
答案 0 :(得分:3)
专业解决方案:
创建受保护的目录并在目录中创建.htaccess
文件,并将所有嵌入和部分文件复制到目录中
这个目录无法访问whit获取网址
但您可以包含文件whit php include
和require
方法
.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