OSDN Git Service

Another bug fix to MySQL sessions.
authorKazuki Przyborowski <kazuki.przyborowski@gmail.com>
Tue, 4 Aug 2009 04:20:29 +0000 (04:20 +0000)
committerKazuki Przyborowski <kazuki.przyborowski@gmail.com>
Tue, 4 Aug 2009 04:20:29 +0000 (04:20 +0000)
git-svn-id: svn://svn.code.sf.net/p/intdb/svn/trunk@289 2b68903e-0b30-0410-9a39-a2e4f3c5be39

inc/admin/main.php
inc/versioninfo.php
mysql.php

index c93eba8..beaeacf 100644 (file)
@@ -72,6 +72,7 @@ $Settings['KBoostPercent'] = "6|10"; }
 <?php 
 require($SettDir['admin'].'table.php'); 
 if($_GET['act']=="delsessions"&&$GroupInfo['ViewDBInfo']=="yes") {
+$time = GMTimeStamp() - ini_get("session.gc_maxlifetime");
 //$sqlg = query('DELETE FROM `'.$Settings['sqltable'].'sessions` WHERE `expires` < UNIX_TIMESTAMP();', array(null));
 $sqlgc = query('DELETE FROM `'.$Settings['sqltable'].'sessions` WHERE `expires` < %i', array($time));
 mysql_query($sqlgc);
index 521e235..c131915 100644 (file)
@@ -11,7 +11,7 @@
     Copyright 2004-2009 iDB Support - http://idb.berlios.de/
     Copyright 2004-2009 Game Maker 2k - http://gamemaker2k.org/
 
-    $FileInfo: versioninfo.php - Last Update: 8/3/2009 SVN 288 - Author: cooldude2k $
+    $FileInfo: versioninfo.php - Last Update: 8/3/2009 SVN 289 - Author: cooldude2k $
 */
 $File3Name = basename($_SERVER['SCRIPT_NAME']);
 if ($File3Name=="versioninfo.php"||$File3Name=="/versioninfo.php") {
@@ -27,7 +27,7 @@ function version_info($proname,$subver,$ver,$supver,$reltype,$svnver,$showsvn) {
        return $return_var; }
 // Version number and date stuff. :P
 $VER1[0] = 0; $VER1[1] = 2; $VER1[2] = 8; $VERFull[1] = $VER1[0].".".$VER1[1].".".$VER1[2];
-$VER2[0] = "Pre-Alpha"; $VER2[1] = "PA"; $VER2[2] = "SVN"; $SubVerN = 288; $RName = "iDB"; $SFName = "IntDB";
+$VER2[0] = "Pre-Alpha"; $VER2[1] = "PA"; $VER2[2] = "SVN"; $SubVerN = 289; $RName = "iDB"; $SFName = "IntDB";
 $SVNDay[0] = 8; $SVNDay[1] = 3; $SVNDay[2] = 2009; $SVNDay[3] = $SVNDay[0]."/".$SVNDay[1]."/".$SVNDay[2];
 $VerInfo['iDB_Ver'] = version_info($RName,$VER1[0],$VER1[1],$VER1[2],$VER2[1],$SubVerN,false);
 $VerInfo['iDB_Ver_SVN'] = version_info($RName,$VER1[0],$VER1[1],$VER1[2],$VER2[1],$SubVerN,true);
index 8885a36..fadea83 100644 (file)
--- a/mysql.php
+++ b/mysql.php
@@ -169,42 +169,42 @@ ob_clean(); echo "Sorry could not connect to mysql database.\nContact the board
 echo "\n".mysql_errno().": ".mysql_error();
 gzip_page($Settings['use_gzip'],$GZipEncode['Type']); @mysql_close(); die(); }
 $sqltable = $Settings['sqltable'];
-function open( $save_path, $session_name ) {
+function sqlsession_open( $save_path, $session_name ) {
 global $sess_save_path;
 $sess_save_path = $save_path;
 return true; }
-function close() {
+function sqlsession_close() {
 return true; }
-function read( $id ) {
+function sqlsession_read($id) {
 global $sqltable;
 $data = "";
 $time = GMTimeStamp();
-$sqlr = query("SELECT `session_data` FROM `".$sqltable."sessions` WHERE `session_id` = '%s' AND `expires` > %i", array($id,$time));
+$sqlr = query("SELECT `session_data` FROM `".$sqltable."sessions` WHERE `session_id` = '%s'", array($id,$time));
 $rs = mysql_query($sqlr);
 $a = mysql_num_rows($rs);
 if($a > 0) {
 $row = mysql_fetch_assoc($rs);
 $data = $row['session_data']; }
 return $data; }
-function write( $id, $data ) {
+function sqlsession_write($id,$data) {
 global $sqltable;              
-$time = GMTimeStamp() + ini_get("session.gc_maxlifetime");
+$time = GMTimeStamp();
 $sqlw = query("REPLACE `".$sqltable."sessions` VALUES('$id','$data', $time)", array($id,$data,$time));
 $rs = mysql_query($sqlw);
 return true; }
-function destroy( $id ) {
+function sqlsession_destroy($id) {
 global $sqltable;
 $sqld = query("DELETE FROM `".$sqltable."sessions` WHERE `session_id` = '$id'", array($id));
 mysql_query($sqld);
 return true; }
-function gc() {
+function sqlsession_gc($maxlifetime) {
 global $sqltable;
-$time = GMTimeStamp();
+$time = GMTimeStamp() - $maxlifetime;
 //$sqlg = query('DELETE FROM `'.$sqltable.'sessions` WHERE `expires` < UNIX_TIMESTAMP();', array(null));
 $sqlg = query('DELETE FROM `'.$sqltable.'sessions` WHERE `expires` < %i', array($time));
 mysql_query($sqlg);
 return true; }
-@session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
+@session_set_save_handler("sqlsession_open", "sqlsession_close", "sqlsession_read", "sqlsession_write", "sqlsession_destroy", "sqlsession_gc");
 if($cookieDomain==null) {
 @session_set_cookie_params(0, $cbasedir); }
 if($cookieDomain!=null) {