Bir doğrulama bağlantısında kullanılmak üzere sayılar ve harfler kullanarak rastgele, benzersiz bir dize oluşturmak nasıl mümkün olabilir? Bir web sitesinde bir hesap oluşturduğunuzda ve size bir bağlantı içeren bir e-posta gönderdiğinde ve hesabınızı doğrulamak için bu bağlantıya tıklamanız gerektiğinde olduğu gibi... evet... bunlardan biri.
PHP kullanarak bunlardan birini nasıl oluşturabilirim?
Güncelleme: uniqid()
hakkında yeni hatırladım. Bu, mikrosaniye cinsinden geçerli zamana dayalı benzersiz bir tanımlayıcı üreten bir PHP işlevidir. Sanırım bunu kullanacağım.
Güvenlik Bildirimi: Bu çözüm, rastgeleliğinizin kalitesinin bir uygulamanın güvenliğini etkileyebileceği durumlarda kullanılmamalıdır. Özellikle,
rand()
veuniqid()
kriptografik olarak güvenli rastgele sayı üreteçleri değildir. Güvenli bir alternatif için Scott'ın yanıtına bakın.
Zaman içinde kesinlikle benzersiz olması gerekmiyorsa:
md5(uniqid(rand(), true))
Aksi takdirde (kullanıcınız için zaten benzersiz bir giriş belirlediyseniz):
md5(uniqid($your_user_login, true))
Bu işlev, sayıları ve harfleri kullanarak rastgele bir anahtar oluşturacaktır:
function random_string($length) {
$key = '';
$keys = array_merge(range(0, 9), range('a', 'z'));
for ($i = 0; $i < $length; $i++) {
$key .= $keys[array_rand($keys)];
}
return $key;
}
echo random_string(50);
Örnek çıktı:
zsd16xzv3jsytnp87tk7ygv73k8zmr0ekh6ly7mxaeyeh46oe8
örneğin (sözde kodda)
int myInt = random(0, numcharacters)
char[] codealphabet = 'ABCDEF12345'
char random = codealphabet[i]
repeat until long enough