php生成唯一随机码和订单号的几种方法

如果是生成图片id,建议使用md5存储,几乎不会存在冲突。
当然了几亿,几十亿可能会出现一个冲突,但是一般图片存放带有日期文件夹,也不可能存在一个文件夹几十亿个图片,所以md5还是靠谱的,当然你也可以用sha1(),但是使用md5和sha1的缺点就是命名太长了。

我自己存储图片使用的是uniqid()可以看下我的图床存储命名:https://img.545141.com/public/data/2019/05/5ce6915f50a1a.png

如果是生成订单的话,小型网站建议是用:20190529063606960563

echo date('YmdHis').mt_rand(99999,999999); 

PHP生成唯一ID的方法 :
PHP自带生成唯一id的函数:uniqid()
它是基于当前时间微秒数的
用法如下:

 echo uniqid(); //13位的字符串:5cee22f4ebd4d
 echo uniqid("php_"); //当然你可以加上前缀:php_5cee23299b832
 echo uniqid("php_", TRUE); //如果第二个参数more_entropy为true则生成23位字符串:php_5cee233c7bcb10.63305314

但是它生成的标识有可能不是唯一的,所以很多人会:
//这是第一种简单的方法,当然用sha1()函数也可以:f2b62900648aba26943d46739216236e

 echo md5(uniqid()); 

//第二种,利用时间戳的方法:5f18517aa726b1f4e1d87583c1c18993

echo md5(time() . mt_rand(1,1000000)); 

如果你还担心,可以用更严谨的方法:683b11b061f355d529564039d41f2c8db8cffb18

function create_unique() {   
    $data = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']   
    .time() . rand();   
    return sha1($data);   
    //return md5(time().$data);
}
echo create_unique();

php生成唯一订单号的方法 :

第一种:2019052907343

echo date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT); 

第二种:2019052948535055

echo date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); 

第三种:I529109266777215

$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
echo $yCode[intval(date('Y')) - 2011] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));

参考文章:https://www.cnblogs.com/roluce/p/6026081.html
本文略有改动。


 继续浏览关于 技术php 的文章

 本文最后更新于 2019/06/22 16:24:44,可能因经年累月而与现状有所差异

 引用转载请注明:icret > 教程 > php生成唯一随机码和订单号的几种方法