フォームの送信ボタンを押したらセッションタイムアウトで入力したデータが無駄になるというお粗末なWEBアプリをなんとかして欲しいという依頼。サーバー側に手を入れる予算が出ないため、javaスクリプトで応急処置。
クライアントの時刻は信用できないので、入力フォームがロードされたクライアント時刻からの相対時間で判定。
本当は、ユーザー認証を要求して処理を継続させてあげるのが正解。
<html>
<head>
<script language="JavaScript">
<!--
var secPeriod=0; /// active time of session [second]
var msLimit=0; /// at time out o'clock [millsecond]
function setCheckTimeOut( sessionMaxInactiveInterval ){
secPeriod = sessionMaxInactiveInterval;
dateNow = new Date();
msLimit = dateNow.getTime() + secPeriod * 1000;
}
function isSafeTime(){
dateNow=new Date();
nokori = msLimit - dateNow.getTime();
if( 0 > nokori ){
alert( "timed out [" + secPeriod + " second]" );
return false;
}
return true;
}
//setCheckTimeOut( <%=session.getMaxInactiveInterval()%> );
setCheckTimeOut( 3 );
//-->
</script>
</head>
<body>
<form action="" method="post" onsubmit="return isSafeTime()">
<textarea name="message"></textarea>
<input type="submit">
</form>
</body>
</html>