時間をかけた文章をフォーラムなどに投稿しようとして、タイムアウトに遭ったことはありませんか?
精神的なダメージは大きく、そういうことが頻繁にあると、誰も投稿しようとしなくなってしまうでしょう。
拙作オートログインでは、その対策を施してはいますが、オートログインを入れられない環境(セキュリティ上の理由や、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>
' ;
?>
</td>
</tr>
</table>
<!-- end footer -->
<!-- heart beat -->
<{if $xoops_isuser }>
<iframe src="<{$xoops_url}>/heartbeat.php" width="0" height="0"></iframe>
<{/if}>
</body>
</html>