最近项目中要做礼包码生成,看了看网上的代码,可以使用php扩展unid
当然我这里并不是用的unid,而是使用的php自带的uniqid,人狠话不多。看代码
$uniqid = uniqid('gm',true);
$param_string = $_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR'].time().rand().$uniqid;
$sha1 = sha1($param_string);
for(
$a = md5( $sha1, true ),
$s = '0123456789abcdefghijklmnopqrstuvwxyz',
$d = '',
$f = 0;
$f < 8;
$g = ord( $a[ $f ] ),
$d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ],
$f++
);
/**
* 生成礼包接口 100W数据同时生成不重复
* @return string
*/
function sp_gm_get_gift_code() {
$uniqid = uniqid('gm',true);
$param_string = $_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR'].time().rand().$uniqid;
$sha1 = sha1($param_string);
for(
$a = md5( $sha1, true ),
$s = '0123456789abcdefghijklmnopqrstuvwxyz',
$d = '',
$f = 0;
$f < 8;
$g = ord( $a[ $f ] ),
$d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ],
$f++
);
return $d;
}
千万数据没测试,反正百万数据随便测试不会重复,8位兑换码也符合游戏或者其他场景中使用!
有用就用,没用别喷