2016-03-02 111 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編碼來獲得安全的字符串)

相關問題