2012-04-13 18 views
0

ユーザーにページへのリンクをクリックさせ、そのページへの閲覧アクセスが1時間しかないようにするにはどうすればよいですか?Webページの有効期限

時間の終わりに、私はタブ/ウィンドウを閉じるか、別のページにユーザーを送りたいと思っています。

私はフレームワークとしてCodeIgniterを使用しています。

どうすればいいですか?

+0

どのようにスクリーンショットや印刷を防止する予定ですか? – ceejayoz

答えて

0

これは、Cookieを使用して行うことができます。データベースにタイムスタンプを付けて保存するアクセストークンを使用してクッキーを作成するという考え方です。

したがって、ユーザーがデータベースにアクセスすると、ランダムな文字列を作成してデータベースに挿入します。 CodeIgniterのでは、これはまた、トークンが作成されたときのタイムスタンプが含まれている必要があり

$this->load->helper('string'); 
$tokenKey = random_string('alnum', 32); 
$this->db->insert('tokens', array('userid' => $userid, 'key' => $tokenKey)); 

tokensテーブルのようなものを行うことができます。これは、クッキーに有効期限を追加しても、これはまだまだ手間がかかる可能性があるため、この二重チェックがなければ、ユーザーはページに永久的にアクセスできる可能性があるからです。

今度は実際にクッキーを設定します。有効期限を現在の+ 3600秒(今から1時間)に設定しました。

ユーザーが保護されたページにアクセスしようとするたび、あなたは時間よりも古いすべてのトークンを(あなたが期限切れのトークンが保存されていないことを確認する)削除でき
setcookie('tokenKey', $tokenKey, time()+3600, '/'); 

、その後、トークンがあなたのテーブルに存在するかどうかを確認。もしそうなら、それは1時間未満です。

// delete old tokens 
$tokenKey = $_COOKIE['tokenKey']; 
// select token from database  

また、あなたはそれが古いレコードを削除するために取るよ、余分な時間からあなたの顧客を保存するために、期限切れのトークンをクリーンアップするcronジョブまたはその他のスケジュールされたイベントを持つことができます。サイトのサイズによっては、この時間がかなり長くなる可能性があります。

+0

「このタブ/ウィンドウを閉じるか、別のページにユーザーを送信したいですか」というこの取引はありません。 – ceejayoz

1

ビューをメタリフレッシュして、ユーザーが必要なページに移動させることはできませんか?これらの線に沿って

何か:

<meta http-equiv="refresh" content="3600; url=http://example.com/"> 

あなたは、ウィンドウ/タブを閉じるには、探していた場合、私はあなたが少しのJavaScriptを使用することができ

<script> 
    setTimeout(360000, function(){ 
     window.top.close(); 
    }); 
</script> 

を仮定し、そのスクリプトがそうしないなら、私を許してそれが何をすべきか正確に、私はそれのようなものを使用して以来、非常に長い時間でした。

関連する問題