diff --git a/include/class.misc.php b/include/class.misc.php index b6d9a673f6e311a085ce4ab07991e4c3b286f1f9..e913a8de0fdd052b0e9a87ec9693b720cc36e03b 100644 --- a/include/class.misc.php +++ b/include/class.misc.php @@ -14,26 +14,40 @@ vim: expandtab sw=4 ts=4 sts=4: **********************************************************************/ class Misc { - - function randCode($len=8) { - return substr(strtoupper(base_convert(microtime(),10,16)),0,$len); + + function randCode($count=8, $chars=false) { + $chars = $chars ? $chars + : 'abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + $data = ''; + $m = strlen($chars) - 1; + for ($i=0; $i < $count; $i++) + $data .= $chars[mt_rand(0,$m)]; + return $data; } - + + function __rand_seed($value=0) { + // Form a 32-bit figure for the random seed with the lower 16-bits + // the microseconds of the current time, and the upper 16-bits from + // received value + $seed = ((int) $value % 65535) << 16; + $seed += (int) ((double) microtime() * 1000000) % 65535; + mt_srand($seed); + } + /* Helper used to generate ticket IDs */ function randNumber($len=6,$start=false,$end=false) { - mt_srand ((double) microtime() * 1000000); $start=(!$len && $start)?$start:str_pad(1,$len,"0",STR_PAD_RIGHT); $end=(!$len && $end)?$end:str_pad(9,$len,"9",STR_PAD_RIGHT); - + return mt_rand($start,$end); } - /* misc date helpers...this will go away once we move to php 5 */ + /* misc date helpers...this will go away once we move to php 5 */ function db2gmtime($var){ global $cfg; if(!$var) return; - + $dbtime=is_int($var)?$var:strtotime($var); return $dbtime-($cfg->getDBTZoffset()*3600); } @@ -41,7 +55,7 @@ class Misc { //Take user time or gmtime and return db (mysql) time. function dbtime($var=null){ global $cfg; - + if(is_null($var) || !$var) $time=Misc::gmtime(); //gm time. else{ //user time to GM. @@ -52,7 +66,7 @@ class Misc { //gm to db time return $time+($cfg->getDBTZoffset()*3600); } - + /*Helper get GM time based on timezone offset*/ function gmtime() { return time()-date('Z'); @@ -67,7 +81,7 @@ class Misc { //Current page function currentURL() { - + $str = 'http'; if ($_SERVER['HTTPS'] == 'on') { $str .='s'; @@ -78,7 +92,7 @@ class Misc { if (isset($_SERVER['QUERY_STRING'])) { $_SERVER['REQUEST_URI'].='?'.$_SERVER['QUERY_STRING']; } - } + } if ($_SERVER['SERVER_PORT']!=80) { $str .= $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI']; } else { @@ -92,7 +106,7 @@ class Misc { $hr =is_null($hr)?0:$hr; $min =is_null($min)?0:$min; - //normalize; + //normalize; if($hr>=24) $hr=$hr%24; elseif($hr<0) @@ -106,7 +120,7 @@ class Misc { $min=15; else $min=0; - + ob_start(); echo sprintf('<select name="%s" id="%s">',$name,$name); echo '<option value="" selected>Time</option>'; diff --git a/include/mysql.php b/include/mysql.php index 2a479072cf57eff4dcf6da1e2e7c026949c1a357..4e3bd7eb8caf242c92b3846fb1b7d5c845f31a87 100644 --- a/include/mysql.php +++ b/include/mysql.php @@ -23,6 +23,7 @@ return NULL; //Connect + $start = (double) microtime() * 1000000; if(!($dblink =@mysql_connect($host, $user, $passwd))) return NULL; @@ -36,6 +37,9 @@ @db_set_variable('sql_mode', ''); + // Use connection timing to seed the random number generator + Misc::__rand_seed(((double) microtime() * 1000000) - $start); + return $dblink; } diff --git a/include/mysqli.php b/include/mysqli.php index ced95434a971b729e5934b3f5754f8f25166aad8..ec369c652accad3f33af04eb085ee0e1ab88a584 100644 --- a/include/mysqli.php +++ b/include/mysqli.php @@ -39,6 +39,7 @@ function db_connect($host, $user, $passwd, $options = array()) { return NULL; //Connectr + $start = microtime(true); if(!@$__db->real_connect($host, $user, $passwd)) return NULL; @@ -52,6 +53,9 @@ function db_connect($host, $user, $passwd, $options = array()) { @db_set_variable('sql_mode', ''); + // Use connection timing to seed the random number generator + Misc::__rand_seed((microtime(true) - $start) * 1000000); + return $__db; }