X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=session.php;h=4efec20e32d649217d2933e0282c7ad4e2009886;hb=0848aa3606b38ec51701960b9cbd84bea0fbd8ce;hp=295c421df7854d43b79a049c5b2463e34444699d;hpb=d33688ee9c43b2cbd63082ecdfd89d5e132a57de;p=wfpl.git diff --git a/session.php b/session.php index 295c421..4efec20 100644 --- a/session.php +++ b/session.php @@ -18,11 +18,11 @@ # along with wfpl; if not, write to the Free Software Foundation, Inc., 51 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -# you'll need this file that calles db_connect() +# you'll need this file that calls db_connect() if(!isset($GLOBALS['wfpl_db_handle'])) { - if(file_exists('db_connect.php') { + if(file_exists('db_connect.php')) { require_once('db_connect.php'); - } elseif(file_exists('code/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."); @@ -32,6 +32,9 @@ if(!isset($GLOBALS['wfpl_db_handle'])) { # and these database tables: # create table wfpl_sessions (id int unique auto_increment, session_key varchar(16), length int, expires int); # create table wfpl_session_data (id int unique auto_increment, session_id int, name varchar(100), value text); +# run this command to install/clear the tables: +# mysql DATABASE_NAME < code/wfpl/examples/session.sql +# note: you may need these parameters for mysql: -u USERNAME -p # GLOSSARY # @@ -68,6 +71,7 @@ function session_new($length = 86400) { $GLOBALS['session_key'] = $session_key; $_REQUEST['session_key'] = $session_key; #just in case someone calls session_exists() after session_new() session_touch($length); + return $GLOBALS['session_key']; } # call to renew the timeout for the session. @@ -100,7 +104,7 @@ function _kill_session($id) { # delete expired sessions from database function session_purge_old() { $now = time(); - $exired_sessions = db_get_column('wfpl_sessions', 'id', 'where expires < %i', $now); + $expired_sessions = db_get_column('wfpl_sessions', 'id', 'where expires < %i', $now); if($expired_sessions) foreach($expired_sessions as $expired_session) { _kill_session($expired_session); } @@ -112,6 +116,10 @@ function session_exists() { return false; } + if(isset($GLOBALS['session_id'])) { + return true; + } + $session_key = ereg_replace('[^a-zA-Z0-9]', '', $_REQUEST['session_key']); if(!strlen($session_key) == 16) { @@ -149,12 +157,12 @@ function init_session() { # save a variable into the session function session_set($name, $value) { - session_unset($name); + session_clear($name); db_insert('wfpl_session_data', 'session_id,name,value', $GLOBALS['session_id'], $name, $value); } # remove variable from the session -function session_unset($name) { +function session_clear($name) { db_delete('wfpl_session_data', 'where session_id=%i && name=%"', $GLOBALS['session_id'], $name); }