İçeriğe geç

PHP ile Benzersiz ID Oluşturma

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ş.

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ş.

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, ön ek 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ğıdaki gibidir.

$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ı 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.

Saygı ve muhabbetle!..

Bu içeriği paylaşmak ister misiniz?

İlk Yorumu Siz Yapın

Bir cevap yazın

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

Buradaki içeriklerin tümü kamu malıdır. Kullanılması ve paylaşılması özgürdür.