Q
網頁過期
0
A
回答
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>
原諒我,如果該腳本沒有做究竟應該如何,從我使用過這樣的東西開始,這已經很長時間了。
相關問題
- 1. 網頁已過期
- 2. 網頁已過期例外
- 3. kentico IE'網頁已過期'
- 4. 解決在IE8中過期的網頁
- 5. 錯誤 - 網頁已在PHP中過期?
- 6. 經典ASP。網頁已過期。錯誤
- 7. 過濾網頁
- 8. 通過網頁
- 9. 幀通過網頁
- 10. 經過HTML網頁
- 11. 定期的網頁加載
- 12. 定期刷新網頁
- 13. 使用Firebase過期網址
- 14. 當JSF(Richfaces)按下後退按鈕時,網頁過期提交
- 15. 爲什麼cookie在關閉網頁後過期?
- 16. 網頁已過期ie7無後退按鈕
- 17. 在後退按鈕上顯示「網頁已過期」
- 18. 如何在我的網頁上設置過期標題?
- 19. 如何在IE中避免「網頁已過期」
- 20. 檢查網頁是否被修改/已過期用Ruby
- 21. 在IE中,網頁已過期錯誤只發生在HTTPS上
- 22. 過期網頁上點擊瀏覽器後退按鈕
- 23. 會話過期後重定向到先前瀏覽的網頁
- 24. 通過硒在網頁自動化期間鏈接不打開
- 25. 如何從瀏覽器返回/轉發時的網頁過期
- 26. 將Cookie設置爲當用戶瀏覽網頁時過期
- 27. 錯誤網頁已在IE程序asp.net上過期
- 28. 網頁總是過期,IE7,(?)代理緩存
- 29. 警告:頁面已過期
- 30. 檢票頁面過期
你打算如何防止截圖/打印? – ceejayoz 2012-04-13 16:29:47