在 php 中为 URL 生成一串字母的最佳方法


Best way to generate a string of letters for a URL in php

我需要生成一堆无法复制的字符,我正在将它们添加到数据库中以重定向到另一个页面。

例如 www.website.com/lsdnlsgdngs

拉 12、刘易斯、其他东西

从数据库中,由于显而易见的原因,这无法复制,因为获取数据时会出现问题。

不确定"canot be duplicated"背后的内容。我假设您希望确保没有其他进程/调用发生为不同目的生成相同的值。

然后,您可以对足够唯一的数据使用加密校验和(MD5、SHA1)(例如会话 ID + 当前时间 + 随机数)。如果使用返回二进制数据的函数,则对此值使用 bas64 编码 (btoa)。

这仍然不是完全独特的。您将遭受编码值的冲突。但是,使用加密校验和,这不太可能。

如果您需要确保所有情况下的唯一性(也取决于这些值的生命周期),则需要在数据库中查询现有键(或依赖唯一键冲突错误)来检测重复项(并重复整个生成直到成功)。

但是,如果您使用的是数据库,为什么不使用序列号,序列或数据库提供的任何内容来获取uniq数据(然后您仍然可以使用base64编码来获取安全的字符串)

相关文章: