【发布时间】:2013-09-30 07:12:03
【问题描述】:
我需要生成唯一的 URL,例如 tinyurl:domain.com/pgDzs7、domain.com/ab4dh3 但是(!)问题是我不希望用户有可能通过更改 URL 中的最后一个字母来查看上一个和下一个 URL。
例如,如果有人创建了一个获取 URL domain.com/pgDzs7 的内容,我希望下一个访问者获得一个完全不同的唯一 URL(例如,“ab4dh3”),这样没有人会发现这些 URL 是如何产生的生成并查看其他用户的内容,除非他们知道其 URL。
我在 Stackoverflow 上找到的只是将表的主整数键转换为 base64 形式。但我需要不同的解决方案,它也不会产生冲突,也没有 for/while 循环(如果可能的话),因为我的 MySQL 表有几十个 GBytes。
【问题讨论】:
-
我认为没有办法保证不会产生冲突。只要很少发生冲突,您的
while循环应该只迭代 1 或 2 次,这应该不会太糟糕。只要你的数据库中的值有索引,检查代码是否已经被使用应该很快。