X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=session.php;h=c3be9e939aef32066ec69b02256fbfded8776911;hb=21c47e88810e97fe5b727c9c2689f64533bf6452;hp=5a4b5e160a4f6c3feff9ce45477b50832a4c7603;hpb=d03e8554ee3e80a6333126e67dd4c20f54ec700e;p=wfpl.git diff --git a/session.php b/session.php index 5a4b5e1..c3be9e9 100644 --- a/session.php +++ b/session.php @@ -20,7 +20,13 @@ # you'll need this file that calles db_connect() if(!isset($GLOBALS['wfpl_db_handle'])) { - require_once('db_connect.php'); + if(file_exists('db_connect.php')) { + require_once('db_connect.php'); + } elseif(file_exists('code/db_connect.php')) { + require_once('code/db_connect.php'); + } else { + die("session.php requires a file db_connect.php or that you call db_connect() first. See code/wfpl/db.php for more information."); + } } # and these database tables: @@ -77,15 +83,26 @@ function session_touch($length = false) { db_update('wfpl_sessions', 'expires', $expires, 'where id=%i', $GLOBALS['session_id']); } +# delete the current session +function kill_session() { + if(!session_exists()) { + return; + } + _kill_session($GLOBALS['session_id']); +} + +# for internal use. use kill_session() above +function _kill_session($id) { + db_delete('wfpl_session_data', 'where session_id=%i', $id); + db_delete('wfpl_sessions', 'where id=%i', $id); +} + # delete expired sessions from database function session_purge_old() { $now = time(); $exired_sessions = db_get_column('wfpl_sessions', 'id', 'where expires < %i', $now); - db_delete('wfpl_sessions', 'where expires < %i', $now); - if($expired_sessions) { - foreach($expired_sessions as $expired_session) { - db_delete('wfpl_session_data', 'where session_id=%i', $expired_session); - } + if($expired_sessions) foreach($expired_sessions as $expired_session) { + _kill_session($expired_session); } } @@ -132,12 +149,18 @@ function init_session() { # save a variable into the session function session_set($name, $value) { - db_replace('wfpl_session_data', 'name,value', $name, $value); + session_clear($name); + db_insert('wfpl_session_data', 'session_id,name,value', $GLOBALS['session_id'], $name, $value); +} + +# remove variable from the session +function session_clear($name) { + db_delete('wfpl_session_data', 'where session_id=%i && name=%"', $GLOBALS['session_id'], $name); } # get a variable into the session function session_get($name) { - return db_get_value('wfpl_session_data', 'value', 'where name=%"', $name); + return db_get_value('wfpl_session_data', 'value', 'where session_id=%i && name=%"', $GLOBALS['session_id'], $name); } ?>