1

html1 と html2 という 2 つの html ファイルがあるとします。html1 には、埋め込まれた swf ファイルが含まれています。

今私が欲しいのは、ユーザーがurl経由で直接html2にアクセスできないことです。html1 の swf のリンクからクリックする必要があります。これを達成する方法はありますか?

htmlで出来ないならphpで出来ますか?

ありがとう

編集:

John からの回答の後、私は先に進んで彼のアドバイスを試してみましたが、以前に file1.php にアクセスしたことがあっても、file2.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

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 では可能です。2 つのオプションがあります。1 つは Cookie で、もう 1 つは html5 のローカル ストレージです。

localStorage.hasClick = true;

alert(localStorage.hasClick);

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

しかし、明らかに簡単な解決策は php / c# / ruby​​ / などです...

// html と言ったとき、クライアント側の html/javascript のみを使用することを指します

于 2013-02-22T23:18:45.423 に答える