Question

Ok, I am storing a session variable like so to load up users layouts faster if it's set instead of calling the database. But since the layout can be changed via the Administrator, I'd like to be able to globally remove all sessions where $_SESSION['layout']['action'] is set for all users.

$_SESSION['layout']['action'] = array(a ton of indexes and mulit-dimensional arrays);

Now, I know it's being stored into my database sessions table, there's a column for session_id, last_update, and data. So, question I have is how to remove that session array key ['action'] from all users.

Using

$_SESSION = array();
session_destroy();

Does not work. Basically, session_start() is being loaded on every page load, so I just want to remove all ['action'] keys from ['layout'].

Is this possible to do? Thanks

Was it helpful?

Solution

If you don't want to hit the database each time to load configuration data, you can cache it in a generated .inc file. Remember, PHP is just text - you can use a PHP script to generate another PHP script:

$fh = fopen('sitevars.inc'); // skipping error handling, since this is an example.
fwrite($fh, '<' . '?php' . "\n"); // split the <? tags in case an unbalanced ' somewhere hoses things
fwrite($fh, '$lifetheuniverse = 42;' . "\n"); // single quotes to the $ doesn't have to be escaped.
fwrite($fh, "\$layoutaction = 'slap forehead with palm';\n");
fclose($fh);

and then you just include_once('sitevars.inc'); and boom, it's a "global" variable. No messing with sessions.

That being said, if your sessions are being stored in the database, most likely they're in serialized format. To do a proper job of stripping a particular "global" session var from each, you'd have to load each record, de-serialize, delete the variable, re-serialize, and re-save into the DB. And hope you don't trash someone's session who happens to be active at the time you're doing these updates.

OTHER TIPS

Ok, I am storing a session variable like so to load up users layouts

wrong

I'd like to be able to globally remove all sessions where

wrong

it's being stored into my database

OMG "t instead of calling the database"!

Is this possible to do? Thanks

Leave sessions alone and don't use it for the global settings.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top