PDA

View Full Version : $_SESSION issues


Michael Morris
12-23-2006, 05:02 AM
Have some problems with the following code.

if ($dialogmessage)
{
if (($vbulletin->session->vars['dialog_display_time'] + 1200) < TIMENOW)
{
$dialogid = 'greeting';
eval('$dialogs .= "' . fetch_template('dialog') . '";');
$dialoglauncher = "dialogLaunch('dialog_$dialogid');";
$vbulletin->session->vars['dialog_display_time'] = TIMENOW;
}
else if ($vbulletin->options['sysannounce_global'] && (($vbulletin->session->vars['dialog_global_display_time'] + 1200) < TIMENOW))
{
$dialogid = 'greeting';
eval('$dialogs .= "' . fetch_template('dialog') . '";');
$dialoglauncher = "dialogLaunch('dialog_$dialogid');";
$vbulletin->session->vars['dialog_global_display_time'] = TIMENOW;
}
}

I tried writing directly to $_SESSION but vbulletin apparently erases the contents of that var as a security precaution. I tried using

$vbulletin->session->vars['session_url']['dialog_global_display_time']

and that screwed things up. I'm at a loss here, I don't want to store this information on the user table but it's starting to look like I might have to for lack of a better way to carry this over

(For those wondering, the code launches an interstatial pop-up at session start with forum announcements or private messages. I don't want that interstatial launching once it's been seen. I'd like once per browser session but I'll settle for once per hour. The code is broken down slightly because I have a global announcement I use to warn users that I'm about to shut the boards down).

Adrian Schneider
12-23-2006, 06:06 AM
How are you storing it?

IIRC, the session array is for things from the session table, so if you are setting it via cookie you should use something like this,

$dialogDisplayTime = $vbulletin->input->clean_gpc('c', 'dialog_display_time', TYPE_UINT);Then access it via $dialogDisplayTime or $vbulletin->GPC['dialog_display_time']

(to set the cookie, use...) function vbsetcookie($name, $value = '', $permanent = true, $allowsecure = true, $httponly = false)