在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
随机函数应用的场景很多,比如验证码,token,订单号等。由浅入深了解常用随机函数 1.rand 常用的随机数字函数,默认生成[0,getrandmax()]之间的随机数(包括边界值),因性能问题已被mt_rand替换。 相关函数:rand(int $min, int $max)生成$min和$max之间的数。 srand(int $seed) 生成时间种子,同一个时间种子下随机生成的随机值相同。 getrandmax() 获取最大随机数(随系统不同而不同)。 使用场景:见mt_rand 2.mt_rand 常用随机函数,默认生成[0,mt_getrandmax()]之间的随机函数(包括边界值). 相关函数:mt_rand(int $min, int $max)生成$min和$max之间的数。 mt_srand(int $seed) 生成时间种子,同一个时间种子下随机生成的随机值相同。 mt_getrandmax() 获取最大随机数(随系统不同而不同)。 使用场景:生成验证码mt_rand(1000, 9999); 生成订单号date('YmdHis').str_pad(mt_rand(1,99999), 5, '0', STR_PAD_LEFT); 3.uniqid 生成唯一ID的函数,精确到了微妙,较mt_rand精确。 相关函数:uniqid([string 使用场景:生成token md5(uniqid()) 生成uuid function guid(){ if (function_exists('com_create_guid')){ return com_create_guid(); }else{ mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up. $charid = strtoupper(md5(uniqid(rand(), true))); $hyphen = chr(45);// "-" $uuid = chr(123)// "{" .substr($charid, 0, 8).$hyphen .substr($charid, 8, 4).$hyphen .substr($charid,12, 4).$hyphen .substr($charid,16, 4).$hyphen .substr($charid,20,12) .chr(125);// "}" return $uuid; } } echo guid(); 4.openssl_random_pseudo_bytes 使用场景:生成token public static function getRandomString($length = 42) { /* * Use OpenSSL (if available) */ if (function_exists('openssl_random_pseudo_bytes')) { $bytes = openssl_random_pseudo_bytes($length * 2); if ($bytes === false) throw new RuntimeException('Unable to generate a random string'); return substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $length); } $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; return substr(str_shuffle(str_repeat($pool, 5)), 0, $length); } 5.linux下 head /dev/urandom | tr -dc a-z0-9 | head -c 20
|
2022-08-18
2022-08-17
2022-11-06
2022-08-17
2022-07-18
请发表评论