客户端的php唯一标识符

时间:2011-11-08 01:38:48

标签: php mysql uniqueidentifier

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

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

这里是我的代码:

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

echo makeUnique();

此输出:071120112032291320715949.928639888763427734375000

出于某种原因,我得到071120112032291320715949作为号码。我做错了什么?

2 个答案:

答案 0 :(得分:6)

你需要删除“。” (点)你的功能。你可能正在使用一个INT来删除点后面的数字。

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

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

我的建议是使用md5

简单地散列客户端ID

md5($clientid)

你将mysql字段作为char(32)

答案 1 :(得分:4)

您已经在代码中获得了解决方案。 php函数uniqid()提供了...嗯,一个唯一的ID。如果你想确保它真的非常独特(虽然没有必要),只需将time()附加到最后,如下:

    return uniqid().time();

这也会返回与数字混合的字母(更高的熵),如此响应:

    4eb8895a76edc1320716634