PDA

View Full Version : How to keep session alive?


evouga
07-31-2011, 06:53 PM
The ibproarcade uses this script to try and keep sessions from expiring, by repeatedly refreshing a frame whenever the session would expire:


<?php
//------------------------------------------------------------------------------------------------
// This script is part of ibProArcade for vBulletin (C) MrZeropage
// It refreshes your session while playing in the arcade to avoid being logged out during a game
//------------------------------------------------------------------------------------------------

define('VB_AREA', 'Forum');
define('THIS_SCRIPT', 'holdsession');

require('./includes/init.php');

if (empty($vbulletin))
{
// this is vBulletin 3.0.x
// must load functions.php and initialize session as it is not done automatically
require('./includes/functions.php');
require('./includes/sessions.php');
$session['sessionurl_q'] = "?$session[sessionurl]";
}
else
{
$vboptions =& $vbulletin->options;
$session =& $vbulletin->session->vars;
$bbuserinfo =& $vbulletin->userinfo;
}

$gameid = intval($_POST['gameid']);

$secs = $vboptions['cookietimeout'] - 60;
if ($secs < 60)
{
$secs = 60;
}

echo "<meta http-equiv='refresh' content='$secs'; URL='$vboptions[bburl]/holdsession.php$session[sessionurl_q]act=arcade&do=play&gameid=$gameid\'>";
?>


This worked in vB 3.X and early versions of vB 4, but seems completely broken on vBulletin 4.1.5. The session is killed the instant init.php is included.

There are temporary workarounds I can put in (e.g., delete this script entirely and increase the session timeout in the Admin CP) but I'd prefer fixing this script to work as intended. What's the right way to keep a session from timing out for as long as a user stays on a page, in vB 4.1.5?

Thanks.