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

时间:2016-03-02 16:06:08

标签: php

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

E.g。 www.website.com/lsdnlsgdngs

拉12,刘易斯,其他东西

从数据库中,出于显而易见的原因,这不能重复,因为获取数据会出现问题。

1 个答案:

答案 0 :(得分:1)

不确定背后是什么" canot可以复制"。 我假设您要确保没有其他进程/调用发生,以便为不同目的生成相同的值。

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

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

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

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