Benzersiz kod üretme
22
●10.897
- 25-10-2013, 08:42:21Üyeliği durdurulduArkadaşlar birbirimizi kırmaya hiç gerek yok. bir sorunun alternatifini bilmeden o konuya asla hakimim kimse diyemez ki ben öyle düşünüyorum. Konu'ya yazan arkadaşlara çok teşekkür ediyorum ellerinize sağlık hepsini inceledim ve hepsi yararlı bilgiler.
- 27-10-2013, 12:10:11Kimlik doğrulama veya yönetimden onay bekliyor.@NepenTheS
Tam unique id yapmanın çok kolay (aslında tek yolu) şudur.
Mysql de bir field tutarsın mesela id her unique id istediğinde bu değeri bir arttır bununla bir algoritma kurarsın, çok basitce :
md5($id);
şeklinde yapabilirsin, bu değer hiçbirzaman tekrar etmez sürekli farklı bir string alırsın. - 27-10-2013, 12:34:10Aslında konu çok güzel ilerlerken @lastwisher arkadaşımız size bir adım ilerisini göstermiş neden bu şekilde bir tepkiyle karşılaştı anlayamadım. Yazısında yaptığınız yanlış vs gibi ne bir kelime nede bir tutum söz konusu, size yeni birşey katan insanlara karşı tutumunuzu sanırım gözden geçirmelisiniz.
- 27-10-2013, 13:56:56Kimlik doğrulama veya yönetimden onay bekliyor.Benim benzersiz kod ürütme kullandığım yapı;
<?php header("Content-Type: text/plain; charset=UTF-8"); define("BEGIN_TIME", microtime(true)); function get_random_hash($prefix = null, $toUpper = false) { $length = 32; $random_integer = rand(0, PHP_INT_MAX); $random_string = substr(implode(array_merge(range("a", "z"), range("A", "Z"), range("0", "9"))), 0, $length); $random_md5_hash = md5(sprintf("-%s-%s-", md5(microtime(true)), date('c'))); $generated_hash = (is_null($prefix)) ? sha1(md5(sha1(sprintf("%s-%s-%s-%s", $random_integer, $random_string, $random_md5_hash, $random_integer)))) : $prefix . sha1(md5(sha1(sprintf("%s-%s-%s-%s", $random_integer, $random_string, $random_md5_hash, $random_integer)))); return ($toUpper) ? strtoupper(substr($generated_hash, 0, $length)) : substr($generated_hash, 0, $length); } $generated_hashes = array(); for($i = 0; $i <= 10; ++$i) $generated_hashes[] = get_random_hash(null, true); define("END_TIME", microtime(true)); print_r(array( "begin_time" => BEGIN_TIME, "end_time" => END_TIME, "elapsed_time" => (END_TIME - BEGIN_TIME), "generated_hashes" => $generated_hashes )); - 27-10-2013, 16:11:21Çok teşekkürler çok basit bir yol fakat benim aklıma hiç gelmedi gerçekten, doğru diyorsunuz veritabanında id değeri zaten uniq ve devamlı artıyor, bunu belirli bir algoritmada şifreleyip saklarsam hiç bir zaman aynı değer denk gelmez. Aslında aynı gelme ihtimali matematiksel olarak çok çok düşük fakat yine de insan emin olmak istiyor.lastwisher adlı üyeden alıntı: mesajı görüntüle