我在电子邮件中生成参考编号,有时它在某些邮件中复制参考编号。
我在代码中使用了microtime(),getTimestamp()和随机生成函数。 我将WAF缓存用作服务器。 注意:我不能使用数据库。 有人知道如何解决这个问题吗?
function generate_inquiry_reference_no(){
$date=current_time("Y-m-d");
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 8; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $date."-".$randomString;
}
function generate_email_reference_no(){
$date = new DateTime();
$email_ref_no=$date->getTimestamp();
$ref_no = ((microtime() * 100000)*10);
return $email_ref_no."-".$ref_no;
}```
答案 0 :(得分:0)
考虑使用类似random_bytes
之类的方法来获得实际的随机结果,而不是根据时间得出结果。
function str_rand(int $length = 64){ // 64 = 32
$length = ($length < 4) ? 4 : $length;
return bin2hex(random_bytes(($length-($length%2))/2));
}
echo (new DateTime())->format('Y-m-d') . '_' . str_rand(10)