2012-04-13 25 views
0

如何讓用戶點擊指向頁面的鏈接,並且只能查看該頁面一小時的訪問權限?網頁過期

在小時結束時,我想關閉標籤頁/窗口或將用戶發送到其他頁面。

我使用CodeIgniter作爲我的框架。

這怎麼辦?

+0

你打算如何防止截圖/打印? – ceejayoz 2012-04-13 16:29:47

回答

0

這可以使用cookie來完成。我們的想法是,Cookie是使用存儲在數據庫中的訪問令牌創建的,並帶有時間戳。

因此,當用戶訪問您的數據庫時,您將創建一個隨機字符串並將其插入數據庫。用CodeIgniter,這可能是與事情要做像

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

tokens表中還應該包含創建令牌時的時間戳。這是因爲即使我們爲cookie添加了到期時間,也仍然可以使用,所以如果我們沒有進行這種雙重檢查,用戶可能會永久訪問該頁面。

現在是時候真正設置cookie了。我們將其到期時間設置爲現在+ 3600秒(從現在起一小時)。

setcookie('tokenKey', $tokenKey, time()+3600, '/'); 

每當用戶試圖訪問受保護的頁面,你可以刪除一個多小時之前的所有令牌(以確保不會有存儲你過期的令牌),然後看看是否在你的表中存在令牌。如果是這樣,那還不到一個小時。

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

或者,你可以有一個cronjob或其他計劃事件,清理過期的令牌給您的客戶從額外的時間它會採取刪除舊的記錄保存。根據您的網站的大小,這個時間可能很長。

+0

這些都不涉及「我想關閉標籤頁/窗口或將用戶發送到另一頁」。 – ceejayoz 2012-04-13 17:23:24

1

您是否可以不在視圖中添加元刷新,將用戶移動到您想要的頁面?沿着這些線路

東西:

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

如果您正在尋找關閉窗口/標籤我想你可以使用一個小的JavaScript

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

原諒我,如果該腳本沒有做究竟應該如何,從我使用過這樣的東西開始,這已經很長時間了。