1. 程式人生 > >Session設定永不過期

Session設定永不過期

保持Session的方法:有人說設session.timeout=-1,或小於0的數。這種方法肯定是不行的,session計算時間以分鐘為單位,必須是大於等於1的整數。又有人說設session.timeout=99999。這種同樣不行,session有最大時間限制。我經過測試發現最大值為24小時,也就是說你最大可以session.timeout=1440,1441都是不可以有,呵呵。本人測試環境:win2003+IIS6.0+ASP3.0。

所以想通過設session.timeout的過期時間讓session永不過期是不可能的。寫到Cookies裡是比較好的方法,網上也有很多這樣的教程,這裡就不再說了!還有就是用在要保持session的頁裡設隱藏iframe每隔一段時間(這個時間小於session.timeout的時間)把重新整理一次frame裡的空頁面!實現方法如下:

在要保持session頁里加上: <iframe width=0 height=0 src="/blog/SessionKeeper.asp">
</iframe>


同目錄下建一下SessionKeeper.asp的檔案。 <html>
<head>
<meta http-equiv="Refresh" content="900000;url=sessionKeeper.asp">
<!--每隔900秒重新整理一下自己,為了和伺服器通訊一下,保持session不會丟-->
</head>
</html>


這種方法還是比較長見的,另外還有一種和上面類似的方法,不過他不是用meta自動重新整理巢狀的iframe的方法。他是用javascript:window.setTimeout("functionname()",10000);第隔一段時間時間自動呼叫一個函式的方法,當然函式裡還是要去連線一個空的檔案。具體方法如下:

在要保持session面里加上: <script id=Back language=javascript></script>

<script language=javascript>
function keepsession(){
document.all["Back"].src="/blog/SessionKeeper.asp?RandStr="+Math.random();
//這裡的RandStr=Math.random只是為了讓每次back.src的值不同,防止同一地址重新整理無效的情況
window.setTimeout("keepsession()",900000); //每隔900秒呼叫一下本身
}
keepsession();
</script>

這樣同一目錄下建一個空內容的sessionKeeper.asp就檔案就可以了!