PHP – Benzersiz ID Oluşturma

12 Haziran 2020 tarihinde Emre Can ÖZTAŞ tarafından paylaşıldı.

Bazı durumlarda unique yani benzersiz ID oluşturmak isteyebilirsiniz. Ya da yazılımınıza lisanslama yapmak isteyebilirsiniz. Böyle durumlarda size lazım olan şey ise; benzersiz bir ID değeridir.

PHP ortamında benzersiz ID değeri oluşturmanın bir çok yöntemi var. Hatta bunun için bir de uniqid() adında da fonksiyon kullanıma sunulmuştur.

uniqid() fonksiyonunun kullanımı aşağıdaki gibidir.

uniqid();

Yukarıdaki fonksiyonun ürettiği değer; string cinsinden olacaktır.

Örneğin; bir değer üretelim.

$id = uniqid();

Yukarıdaki satırımızın ekran çıktısı da aşağıdaki gibi olacaktır.

5c24e371dda5b

Üretilen değer 13 karakter uzunluğunda olacaktır, standart olarak.

uniqid() fonksiyonunun yaptığı şey ise; o anki zaman diliminin mikrosaniye cinsinden bir değerini üretmektir.

uniqid() fonksiyonuna, önek belirtebilirsiniz.

$id = uniqid('id_');

uniqid() fonksiyonun ikinci parametresini true olarak belirlerseniz; 23 karakter uzunluğunda bir değer üretir.

$id = uniqid('id_', true);

Yukarıdaki satırımızın ekran çıktısı da aşağıdaki gibi olacaktır.

id_5c24e4b2a749e7.91447254

uniqid() ile üretilen değerler genel olarak benzersizdir. Fakat siz de benim gibi paranoyaksanız; üretilen bu değeri daha da benzersiz kılabilirsiniz. Örneğin; şifreleme yapabilirsiniz, ekstra değerler üretebilirsiniz vs. şeklinde.

Benim genellikle; benzersiz adres üretmek için kullandığım satırım aşağıdakigibidir.

$id = mb_substr(str_shuffle(strtoupper(md5(uniqid(mt_rand(), true)))), 0, 10);

Evet, ne kadar paranoyakça değil mi?!

Yukarıdaki satırda; mt_rand() ile 10 basamaklı bir sayı üretiliyor (Mersenne Twister algoritmasına göre) daha sonra da bu 10 basamaklı sayı uniqid() için bir önek oluyor. uniqid()’te true ile belirttiğim alanla birlikte 23 karakterlik bir sayı daha üretiliyor. Daha sonra üretilen bu değer md5() ile şifreleniyor. Büyük harfe çevriliyor ve string ifadenin karakterlerinin yerleri değiştiriliyor. En sonunda da 10 karakterlik bir kısmını bana veriyor. Burada ilk 10 karakter benim işimi her zaman görüyor. Dilerseniz daha fazla da karakter alabilirsiniz. Zaten üretilen sonuç; 32 karakterlik olacaktır.

Daha açıklayıcı olması için bir ekran çıktısı alalım.

47ED4D5AA7

Yukarıdaki ekran çıktısında da görüldüğü gibi benzersiz bir id değer üretmiş olduk. Tarayıcınızı her yenilediğinizde bu değer değişir. Böylelikle benzersiz id’imizi elde ettiğimizi kanıtlayabiliriz.

Kategoriler: [PHP] Etiketler: #md5() #Mersenne Twister #mt_rand() #str_shuffle() #strtoupper() #uniqid()

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

*
*

This site uses Akismet to reduce spam. Learn how your comment data is processed.