PHP客户端的唯一标识符


php unique identifier for clients

每次客户端请求服务支持时,我为客户端生成一个唯一标识符。

生成id后,将id插入数据库

这里是我的代码:

function makeUnique() {
 $start_time = uniqid(microtime(1));
 $duration = sprintf('%0.24f', $start_time);
 return date('dmYHis').$duration;
}
echo makeUnique();

此输出:071120112032291320715949.928639888763427734375000

由于某种原因,我得到071120112032291320715949作为数字。我做错了什么?

你需要删除"。"(点)在函数中。你可能正在使用INT,它会删除点后面的数字。

return str_replace('.', '', date('dmYHis').$duration);

并确保字段足够大-如varchar(50)

我的建议是简单地使用md5

散列客户端id

md5($clientid)

mysql字段为char(32)

您已经在代码中获得了解决方案。php函数uniqid()提供了…一个唯一的ID。如果您想确保它真的真的真的非常非常独特(尽管这不是必需的),只需将time()附加到末尾,如下所示:

    return uniqid().time();

这也会返回字母和数字的混合(更高的熵),像这样的响应:

    4eb8895a76edc1320716634