セッションタイムアウトを避ける

Date 2005-08-12 12:06:37 | Category: XOOPS

in englishin japanese時間をかけた文章をフォーラムなどに投稿しようとして、タイムアウトに遭ったことはありませんか?
精神的なダメージは大きく、そういうことが頻繁にあると、誰も投稿しようとしなくなってしまうでしょう。

拙作オートログインでは、その対策を施してはいますが、オートログインを入れられない環境(セキュリティ上の理由や、XOOPS2.2)で、なんとかセッションタイムアウトを避けたい、という人も多いでしょう。

かといって、セッション生存時間を長くするのは、セッションハイジャックなどを考えるとマイナスです。

そこで、ハートビート法をXOOPSに取り入れてみました。

いじるのはテーマだけなので、かなり簡単なHackです。
下のファイルを作成して、XOOPS_ROOT_PATH直下に置きます。
heartbeat.php

<?php

include "mainfile.php";

$interval = @ini_get( 'session.gc_maxlifetime' ) ;
if( empty( $interval ) || $interval < 180 ) {
	$interval = 1440 - 120 ; // PHP default : 1440sec (=24min)
} else {
	$interval -= 120 ;
}

echo '
<html>
<head>
<meta HTTP-EQUIV="Refresh" CONTENT="'.$interval.'" />
</head>
<body>
</body>
</html>
' ;

?>



あとは、このファイルを、frameやiframeなどで読み込むように、theme.htmlに記述するだけです。

例) theme.html の最後

</td>
</tr>
</table>
<!-- end footer -->

<!-- heart beat -->
<{if $xoops_isuser }>
  <iframe src="<{$xoops_url}>/heartbeat.php" width="0" height="0"></iframe>
<{/if}>

</body>
</html>




You can read more news at PEAK XOOPS.
http://xoops.peak.ne.jp

The URL for this story is:
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=66