php生成随机唯一推荐码/邀请码/优惠码 固定长度
发布时间
阅读量:
阅读量
认真生活、快乐工作 - 马云
懒惰象生锈一样,比操劳更能消耗身体。
------ 根据用户id生成与之对应的唯一邀请码,范围为‘0-9A-Z’。这个需求的重点在于加粗的部分,也就是要能够根据邀请码反推出用户ID,这样邀请码就不用入库了,在用户量很大的情况下,性能可以得到不小的提升。
< – . – >
具体实现代码如下:
public function mycode()
{
$code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$rand = $code[rand(0,25)]
.strtoupper(dechex(date('m')))
.date('d').substr(time(),-5)
.substr(microtime(),2,6)
.sprintf('%02d',rand(0,99));
for(
$a = md5( $rand, true ),
$s = '0123456789ABCDEFGHIJKLMNOPQRSTUV',
$d = '',
$f = 0;
$f < 6;
$g = ord( $a[ $f ] ),
$d .= $s[ ( $g ^ ord( $a[ $f + 5 ] ) ) - $g & 0x1F ],
$f++
);
return $d;
}
经测试,基本不重复。如果高并发会出现极个别的重复。
可以通过查询数据库是否存在来避免
// 连接数据库
require_once ('vendor/joshcam/mysqli-database-class/MysqliDb.php');
$db = new MysqliDb (Array (
'host' => '127.0.0.1',
'username' => 'root',
'password' => '123456',
'db'=> 'test',
'port' => 3306,
'prefix' => '',
'charset' => 'utf8'));
$code = create_invite_code();
$r = true;
while($r) {
$db->where("code", $code);
$r = $db->has("table_code");
if ($r) {
$code = create_invite_code();
}
}
echo $code;
如果存在,就重新生成一个,直到不重复,再保存。
其他生成唯一订单号方式:在tp6框架中的app/common.php文件中定义一个订单号方法
//生成订单号
function xn_create_order_no()
{
$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
$orderSn = $yCode[intval(date('Y')) - 2020] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));
return $orderSn;
}
以上就是生成随机唯一推荐码的功能,有不对的地方可以下方评论或私我,多多益善。最后不妨给俺点个赞呗·
全部评论 (0)
还没有任何评论哟~
