2016-03-02 25 views
-2

我需要生成一堆不能重复的字符,我将它们添加到数据库以重定向到另一个页面。在php中为URL生成字符串的最佳方法

E.g. www.website.com/lsdnlsgdngs

拉12,刘易斯,其他的东西

从数据库,原因很明显这不能被复制,因为将与获取数据的问题。

+0

真的没什么所以至于我不知道从哪里开始,这个问题呢... –

+0

阅读这个:http://stackoverflow.com/questions/19926660/generating-unique-string-in-php-for-mysql-database – CodeGodie

+0

我做了一个简单的搜索,发现[this](http://stackoverflow.com/questions/1846202/php-how-to-generate-a-random-unique-alphanumeric-string) – DevDonkey

回答

1

不确定背后有什么“canot be duplicated”。 我假设你想确保没有其他进程/调用发生,以便为不同目的生成相同的值。

然后你可以在充分唯一的数据 (例如会话id +当前时间+随机数)上使用加密校验和(MD5,SHA1)。如果您正在使用返回二进制数据的函数,请对此值使用bas64编码(btoa)。

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

如果您需要确保在所有情况下都具有唯一性(还会考虑这些值的使用期限),您需要在数据库中查询现有密钥(或依赖唯一密钥违规错误)以检测重复项(并重复整个生成直到成功)。

但是,如果你正在使用的数据库,你为什么不使用连续,序列或任何你的数据库提供了获取uniq的数据(那么你仍然可以使用base64编码来获得安全的字符串)

相关问题