这个 PHP 唯一 ID 生成器是否存在问题


is there an issue with this php unique id generator?

这个代码是我计划用于生成门票的唯一代码的代码。

// A prefix to avoid uniqid collisions (when invoking this function at the same time).
// Should I use mt_rand or just rand?
$prefix = str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);
// uniqid with more entropy enabled.
$unique_id = uniqid("$prefix-", TRUE);
// A SHA-1 hash for the generated code, this way it looks less sequential.
$unique_id = sha1($unique_id);

如果您能告诉我此代码中的问题,那将更有帮助。

提前感谢。

这取决于要求,它必须是没有人能猜到的超级秘密字符串吗?

如果没有,假设您也要将票证存储在数据库中,您可以使用$unique_id = sha1(DATABASE_KEY);

echo sha1(1) . "'n";
echo sha1(2) . "'n";
echo sha1(3) . "'n";

请参阅示例。

现在你有一个长而有趣的字符串,你甚至不需要存储。