【问题标题】:php unique identifier for clientsphp 客户端的唯一标识符
【发布时间】:2011-11-08 01:38:48
【问题描述】:

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

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

这是我的代码:

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

echo makeUnique();

这个输出:071120112032291320715949.928639888763427734375000

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

【问题讨论】:

    标签: php mysql uniqueidentifier


    【解决方案1】:

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

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

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

    我的建议是简单地使用 md5 散列客户端 ID

    md5($clientid)

    你的 mysql 字段是 char(32)

    【讨论】:

      【解决方案2】:

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

          return uniqid().time();
      

      这也会返回与数字混合的字母(更高的熵),如下所示:

          4eb8895a76edc1320716634
      

      【讨论】:

      • 您也可以这样做uniqid('', TRUE),它将在返回值的末尾添加额外的熵(使用组合线性同余生成器),这增加了结果唯一的可能性。
      猜你喜欢
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多