【发布时间】:2017-05-05 12:23:51
【问题描述】:
我想知道 PHP 中是否有一种方法可以生成唯一的字母数字(区分大小写)标记,该标记可以永远唯一而不会发生任何冲突。如果我们从 time stamp 字符串派生它们,该字符串是 10 个字符,例如:1394452319,这可能是可能的,但我不确定我们是否可以将令牌缩短到 4人物?如果不可能,则 5、6、7 和最大为 8 个字符。因为我想生成简短的令牌以供用户阅读。
代币应如下所示:1aYc、ZoXq、3iU9 等。
我不想向用户展示任何序列。
还有一件事,我的应用程序将被多个用户使用,所以如果两个用户同时点击生成令牌,PHP 应用程序是否会生成相同的令牌(我假设我们使用时间戳来生成令牌)?我们怎样才能避免这个问题?
感谢您的帮助!
【问题讨论】:
-
好吧,
Random::alphanumericString($length)与 4(含)和 8(含)之间的$length正是您想要的。如果你愿意,你甚至可以随机化长度,例如通过传递Random::intBetween(4, 8)。但是这个(以及任何其他解决方案)有理论上的限制:4 个字符只能有 14,776,336 个不同的值,8 个字符只能有 218,340,105,600,000 个值(虽然很多)。
标签: php