摘要:記錄使用者登入登出時間
這是一個客戶的需求
要求記錄使用者的使用時間,因此就必須要記錄留在系統的時間
登入時間沒問題,但是使用者並不是每個都那麼乖,乖乖的按下登出(我自己都這樣了)
因此就要想辦法攔截到window close的事件
但是window close是client的狀態,並不會跟server溝通,所以就要想辦法自己通知了
首先先找到攔截window close的事件 window.onunload
然後再來找怎麼通知server,之前有看過CallBack的作法
想說用XmlHTTP,或許可行
後來找到強者連JavaScript都寫好了
www.blueshop.com.tw/board/show.asp
稍微修改一下把javascript寫進masterpage(這點或許以後再加工包進去server,這樣連要記錄的page都可以參數化)
<script type="text/javascript" language="javascript">
window.onunload = CloseWindows;
function CloseWindows()
{
//按下X關閉
if (event.clientY < 0)
{
try
{
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
//使用者自行關閉視窗時
xmlhttp.open("POST","CloseWindows.aspx", false);
xmlhttp.send();
return true;
}
catch(e)
{
alert('close windows error message:' + e.message);
}
}
}
</script>
然後在新增一個CloseWindows.aspx
因為還沒有決定DB要怎麼記錄,所以我就先用log4net記錄
private ILog logger = LogManager.GetLogger("RollingFileAppender");
protected void Page_Load(object sender, EventArgs e)
{
logger.Info("使用者關閉視窗!!");
}
出來的結果
2009-07-02 10:43:59,723 INFO RollingFileAppender d:\WebApp\VS2008\SFA\CloseWindows.aspx.cs21 [(null)]
使用者關閉視窗!!