Changeset 4570
- Timestamp:
- 10/15/07 21:01:31 (13 months ago)
- Location:
- trunk
- Files:
-
- 1 removed
- 6 modified
-
components/Needlworks.DBMS.MySQL.php (modified) (1 diff)
-
lib/database.php (modified) (1 diff)
-
lib/function/mysql.php (deleted)
-
lib/includeForBlog.php (modified) (1 diff)
-
lib/includeForBlogOwner.php (modified) (1 diff)
-
lib/includeForReader.php (modified) (1 diff)
-
lib/session.php (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/components/Needlworks.DBMS.MySQL.php
r4569 r4570 47 47 $count = 0; 48 48 if ($result = DBQuery::query($query)) { 49 $count = mysql_num_rows($result); 50 mysql_free_result($result); 49 if( stristr($query, 'select ')) { 50 $count = mysql_num_rows($result); 51 mysql_free_result($result); 52 } else if (stristr($query, 'insert ') || 53 stristr($query, 'update ') || 54 stristr($query, 'delete ') || 55 stristr($query, 'replace ') ) { 56 $count = mysql_affected_rows(); 57 } 51 58 } 52 59 return $count; 53 60 } 54 61 55 62 /*@static@*/ 56 63 function queryCell($query, $field = 0, $useCache=true) { -
trunk/lib/database.php
r4563 r4570 9 9 return DBQuery::escapeString($string, $link); 10 10 } 11 12 function escapeSearchString($str) { 13 return is_string($str) ? str_replace('_', '\_', str_replace('%', '\%', tc_escape_string($str))) : $str; 14 } 15 16 function doesExistTable($tablename) 17 { 18 global $database; 19 static $tables = array(); 20 if( empty($tables) ) { 21 $escapename = escapeSearchString($database['prefix']); 22 $tables = DBQuery::queryColumn( "SHOW TABLES LIKE '{$escapename}%'" ); 23 } 24 if( in_array( $tablename, $tables ) ) { 25 return true; 26 } 27 return false; 28 } 11 29 ?> -
trunk/lib/includeForBlog.php
r3945 r4570 10 10 require 'function/html.php'; 11 11 require 'function/xml.php'; 12 require 'function/mysql.php';13 12 require 'function/misc.php'; 14 13 require 'function/image.php'; -
trunk/lib/includeForBlogOwner.php
r3945 r4570 10 10 require 'function/html.php'; 11 11 require 'function/xml.php'; 12 require 'function/mysql.php';13 12 require 'function/misc.php'; 14 13 require 'function/image.php'; -
trunk/lib/includeForReader.php
r3477 r4570 10 10 require 'function/html.php'; 11 11 require 'function/xml.php'; 12 require 'function/mysql.php';13 12 require 'function/misc.php'; 14 13 require 'function/image.php'; -
trunk/lib/session.php
r4563 r4570 19 19 function readSession($id) { 20 20 global $database, $service; 21 if ($result = sessionQuery("SELECT data FROM {$database['prefix']}Sessions WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}' AND updated >= (UNIX_TIMESTAMP() - {$service['timeout']})")) {22 if ($session = mysql_fetch_array($result))23 return $session['data'];21 if ($result = sessionQuery("SELECT data FROM {$database['prefix']}Sessions 22 WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}' AND updated >= (UNIX_TIMESTAMP() - {$service['timeout']})")) { 23 return $result; 24 24 } 25 25 return ''; … … 38 38 $referer = isset($_SERVER['HTTP_REFERER']) ? tc_escape_string($_SERVER['HTTP_REFERER']) : ''; 39 39 $timer = getMicrotimeAsFloat() - $sessionMicrotime; 40 $result = DBQuery::query("UPDATE {$database['prefix']}Sessions SET userid = $userid, data = '$data', server = '$server', request = '$request', referer = '$referer', timer = $timer, updated = UNIX_TIMESTAMP() WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}'"); 41 if ($result && (mysql_affected_rows() == 1)) 40 $result = DBQuery::queryCount("UPDATE {$database['prefix']}Sessions 41 SET userid = $userid, data = '$data', server = '$server', request = '$request', referer = '$referer', timer = $timer, updated = UNIX_TIMESTAMP() 42 WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}'"); 43 if ($result && $result == 1) 42 44 return true; 43 45 return false; … … 46 48 function destroySession($id, $setCookie = false) { 47 49 global $database; 48 @DBQuery::query("DELETE FROM {$database['prefix']}Sessions WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}'"); 50 @DBQuery::query("DELETE FROM {$database['prefix']}Sessions 51 WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}'"); 49 52 gcSession(); 50 53 } … … 52 55 function gcSession($maxLifeTime = false) { 53 56 global $database, $service; 54 @DBQuery::query("DELETE FROM {$database['prefix']}Sessions WHERE updated < (UNIX_TIMESTAMP() - {$service['timeout']})"); 55 $result = @sessionQuery("SELECT DISTINCT v.id, v.address FROM {$database['prefix']}SessionVisits v LEFT JOIN {$database['prefix']}Sessions s ON v.id = s.id AND v.address = s.address WHERE s.id IS NULL AND s.address IS NULL"); 57 @DBQuery::query("DELETE FROM {$database['prefix']}Sessions 58 WHERE updated < (UNIX_TIMESTAMP() - {$service['timeout']})"); 59 $result = @sessionQueryAll("SELECT DISTINCT v.id, v.address 60 FROM {$database['prefix']}SessionVisits v 61 LEFT JOIN {$database['prefix']}Sessions s ON v.id = s.id AND v.address = s.address 62 WHERE s.id IS NULL AND s.address IS NULL"); 56 63 if ($result) { 57 64 $gc = array(); 58 while ($g = mysql_fetch_row($result))65 foreach ($result as $g) 59 66 array_push($gc, $g); 60 67 foreach ($gc as $g) … … 67 74 global $database; 68 75 $result = sessionQuery("SELECT id FROM {$database['prefix']}Sessions WHERE address = '{$_SERVER['REMOTE_ADDR']}' AND userid IS NULL AND preexistence IS NULL"); 69 if ($result && (list($id) = mysql_fetch_array($result)))70 return $ id;76 if ($result) 77 return $result; 71 78 return false; 72 79 } … … 78 85 return $id; 79 86 $id = dechex(rand(0x10000000, 0x7FFFFFFF)) . dechex(rand(0x10000000, 0x7FFFFFFF)) . dechex(rand(0x10000000, 0x7FFFFFFF)) . dechex(rand(0x10000000, 0x7FFFFFFF)); 80 DBQuery::query("INSERT INTO {$database['prefix']}Sessions(id, address, created, updated) VALUES('$id', '{$_SERVER['REMOTE_ADDR']}', UNIX_TIMESTAMP(), UNIX_TIMESTAMP())");81 if ( mysql_affected_rows()> 0)87 $result = DBQuery::queryCount("INSERT INTO {$database['prefix']}Sessions(id, address, created, updated) VALUES('$id', '{$_SERVER['REMOTE_ADDR']}', UNIX_TIMESTAMP(), UNIX_TIMESTAMP())"); 88 if ($result > 0) 82 89 return $id; 83 90 } … … 104 111 for ($i = 0; ($i < 100) && !setSessionAnonymous(); $i++) { 105 112 $id = dechex(rand(0x10000000, 0x7FFFFFFF)) . dechex(rand(0x10000000, 0x7FFFFFFF)) . dechex(rand(0x10000000, 0x7FFFFFFF)) . dechex(rand(0x10000000, 0x7FFFFFFF)); 106 $result = DBQuery::query ("INSERT INTO {$database['prefix']}Sessions(id, address, created, updated) SELECT DISTINCT '$id', '{$_SERVER['REMOTE_ADDR']}', UNIX_TIMESTAMP(), UNIX_TIMESTAMP())");107 if ( ($result !== false) && (mysql_affected_rows() > 0)) {113 $result = DBQuery::queryCount("INSERT INTO {$database['prefix']}Sessions(id, address, created, updated) SELECT DISTINCT '$id', '{$_SERVER['REMOTE_ADDR']}', UNIX_TIMESTAMP(), UNIX_TIMESTAMP())"); 114 if ($result && $result > 0) { 108 115 session_id($id); 109 116 return true; … … 115 122 function isSessionAuthorized($id) { 116 123 global $database; 117 $result = DBQuery::query("select id from {$database['prefix']}Sessions where id = '$id' and address = '{$_SERVER['REMOTE_ADDR']}' and (userid is not null or preexistence is not null)"); 118 if ($result && (mysql_num_rows($result) == 1)) 124 $result = DBQuery::queryCell("SELECT id 125 FROM {$database['prefix']}Sessions 126 WHERE id = '$id' 127 AND address = '{$_SERVER['REMOTE_ADDR']}' 128 AND (userid IS NOT NULL OR preexistence IS NOT NULL)"); 129 if ($result) 119 130 return true; 120 131 return false; … … 141 152 for ($i = 0; $i < 100; $i++) { 142 153 $id = dechex(rand(0x10000000, 0x7FFFFFFF)) . dechex(rand(0x10000000, 0x7FFFFFFF)) . dechex(rand(0x10000000, 0x7FFFFFFF)) . dechex(rand(0x10000000, 0x7FFFFFFF)); 143 $result = DBQuery::query("INSERT INTO {$database['prefix']}Sessions(id, address, userid, created, updated) VALUES('$id', '{$_SERVER['REMOTE_ADDR']}', $userid, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())"); 144 if ($result && (mysql_affected_rows() == 1)) { 154 $result = DBQuery::queryCount("INSERT INTO {$database['prefix']}Sessions 155 (id, address, userid, created, updated) 156 VALUES('$id', '{$_SERVER['REMOTE_ADDR']}', $userid, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())"); 157 if ($result && $result == 1) { 145 158 @session_id($id); 146 159 setcookie('TSSESSION', $id, 0, $session_cookie_path, $service['domain']); … … 153 166 function sessionQuery($sql) { 154 167 global $database, $sessionDBRepair; 155 $result = DBQuery::query ($sql);168 $result = DBQuery::queryCell($sql); 156 169 if($result === false) { 157 170 if (!isset($sessionDBRepair)) { 158 171 DBQuery::query("REPAIR TABLE {$database['prefix']}Sessions"); 159 $result = DBQuery::query($sql); 172 $result = DBQuery::queryCell($sql); 173 $sessionDBRepair = true; 174 } 175 } 176 return $result; 177 } 178 179 function sessionQueryAll($sql) { 180 global $database, $sessionDBRepair; 181 $result = DBQuery::queryAll($sql); 182 if($result === false) { 183 if (!isset($sessionDBRepair)) { 184 DBQuery::query("REPAIR TABLE {$database['prefix']}Sessions"); 185 $result = DBQuery::queryAll($sql); 160 186 $sessionDBRepair = true; 161 187 }
