WordPress.org

Make WordPress Core

Changeset 8749


Ignore:
Timestamp:
08/27/08 18:05:27 (7 years ago)
Author:
ryan
Message:

wp_rand() - more randy rands for 2.6

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.6/wp-includes/pluggable.php

    r8582 r8749  
    12901290    $password = ''; 
    12911291    for ( $i = 0; $i < $length; $i++ ) 
    1292         $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); 
     1292        $password .= substr($chars, wp_rand(0, strlen($chars) - 1), 1); 
    12931293    return $password; 
     1294} 
     1295endif; 
     1296 
     1297if ( !function_exists('wp_rand') ) : 
     1298 /** 
     1299 * Generates a random number 
     1300 * 
     1301 * @since 2.6.2 
     1302 * 
     1303 * @param int $min Lower limit for the generated number (optional, default is 0) 
     1304 * @param int $max Upper limit for the generated number (optional, default is 4294967295) 
     1305 * @return int A random number between min and max 
     1306 */ 
     1307function wp_rand( $min = 0, $max = 0 ) { 
     1308    global $rnd_value; 
     1309 
     1310    $seed = get_option('random_seed'); 
     1311 
     1312    // Reset $rnd_value after 14 uses 
     1313    // 32(md5) + 40(sha1) + 40(sha1) / 8 = 14 random numbers from $rnd_value 
     1314    if ( strlen($rnd_value) < 8 ) { 
     1315        $rnd_value = md5( uniqid(microtime() . mt_rand(), true ) . $seed ); 
     1316        $rnd_value .= sha1($rnd_value); 
     1317        $rnd_value .= sha1($rnd_value . $seed); 
     1318        $seed = md5($seed . $rnd_value); 
     1319        update_option('random_seed', $seed); 
     1320    } 
     1321 
     1322    // Take the first 8 digits for our value 
     1323    $value = substr($rnd_value, 0, 8); 
     1324 
     1325    // Strip the first eight, leaving the remainder for the next call to wp_rand(). 
     1326    $rnd_value = substr($rnd_value, 8); 
     1327 
     1328    $value = abs(hexdec($value)); 
     1329 
     1330    // Reduce the value to be within the min - max range 
     1331    // 4294967295 = 0xffffffff = max random number 
     1332    if ( $max != 0 ) 
     1333        $value = $min + (($max - $min + 1) * ($value / (4294967295 + 1))); 
     1334 
     1335    return abs(intval($value));  
    12941336} 
    12951337endif; 
Note: See TracChangeset for help on using the changeset viewer.