Orkut Baştuğ

Blog

PHP İle Rastgele Sayı, Harf, Şifre Üretmek

PHP İle Rastgele Sayı, Harf, Şifre Üretmek

PHP ile rastgele sayı üretebiliyoruz. Bu mantıktan yola çıkararak yazdığımız ek fonksiyonlar aracılığı ile harf ve çoğul olarak şifre üretimi de sağlayabiliriz.

Şimdi PHP ile rastgele sayı, rastgele harf ve şifre üretme işlemlerini 3 başlıkta öğreneceğiz..

PHP ile Rastgele Sayı Üretmek

PHP ile rand() fonksiyonunu kullanarak rastgele sayı üretebiliyoruz. Örneğin aşağıda ki örnek kullanımda 1 ile 100 arasında bir sayı üretmeyi sağlayabiliriz.

<?php

rand(1,100);

?>

PHP ile Rastgele Harf Üretmek

Php ile rastgele harf üretimini sayı üretmek gibi bir fonksiyon aracılığı ile hemen gerçekleştirmek mümkün değil. Bunun bir dizi yol izlememiz gerekiyor.

Öncelikle harf üretimi yapılacak bir küme elemanı saklayacağımız bir değişkene ihtiyacımız var.

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";

İzleyeceğimiz mantık şu. ilgili harf kümesini barındıran değişkenin içinde ki karakter sayısını hesaplamak ve hesapladığımız karakter sayısına kadar bir random sayı elde edip denk gelen karakteri listelemek.

Öncelikle $harfler değişkeninde kaç karakter var bunu öğrenelim.

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";

//echo strlen($harfler);

echo mb_strlen($harfler);

Yukarıda $harfler değişkeni içerisinde yer alan karakter sayısını strlen() fonksiyonu ile öğrenmeye çalıştığınızda hatalı bir sonuç alabilirsiniz. Bunun nedeni türkçe karakterlerin ortaya çıkardığı sorundur. Bu sorunu mb_strlen() fonksiyonunu kullanarak çözebilirsiniz.

Dikkat!

Artık ilgili karakter depo değişkenimiz de kaç karakterimiz olduğunu biliyoruz. O zaman bu karakter sayısı aralığında yani 0-29 arasında bir sayı üretip denk gelen karakteri substr() fonksiyonu aracılığı ile gösterebiliriz. Türkçe karakter problemi yaşamamak için yine mb_substr() olarak fonksiyomuzu kullanıyoruz. Ayrıca PHP 7.1 ile birlikte rand() fonksiyonu artık mt_rand() olarak kullanılması öneriliyor.

//Karakter deposu

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";

//karakter deposunda ki harf sayısı hesaplanıp 1 çıkartılıyor. Bunun sebebi mb_substr fonksiyonunun ilk karakteri 0 olarak baz almasıdır.

$harf_say=mb_strlen($harfler)-1;

//0 ile Karakter deposu sayısı arasında rastgele bir sayı üretiliyor.

$harf_sec=mt_rand(0,$harf_say);

//Rastgele üretilen sayıya denk gelen harf listeleniyor

echo mb_substr($harfler,$harf_sec,1);

İlgili kodun sadeleştirilmiş hali. Değişkenlerden soyutlayıp tek satırda şu şekilde yazabiliriz.

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";

echo mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);

PHP ile Rastgele Şifre Üretmek

PHP ile rastgele harf üretimini gerçekleştirdik. Döngü ile bu işlemi belirtilen sayıda tekrar edersek istediğimiz uzunlukta bir şifre elde etmiş oluruz.

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";

mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);

for ($i=1; $i<=5; $i++)

{

$password.=mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);

}

echo "Üretilen Şifre: ".$password;

$i<=5; bu kısımda belirttiğimiz 5 şifrenin uzunluğunu ifade ediyor. Şimdide bunu fonksiyonlaştıralım.

PHP ile Rastgele Şifre Üretme Fonksiyonu

Yazdığımız fonksiyonlar bizi kodlardan ayrıştırarak daha rahat bir kullanım olanağı sağlar ve işlerimizi pratikleştirir. Onlarca kod satırını tekrar tekrar kullanmak yerine tek bir satırda istediğimiz sürekli işlemleri yapmayı sağlar.

function passGenerator($password_length) {

$harfler="ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ";

mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);

for ($i=1; $i<=$password_length; $i++)

{

$password.=mb_substr($harfler,mt_rand(0,mb_strlen($harfler)-1),1);

}

return $password;

}

 

//Fonksiyonunun Kullanımı

echo passGenerator(5);

KAYNAK : https://www.emrahyuksel.com.tr/php-ile-rastgele-sayi-harf-sifre-uretmek/

<!--?php rand(1,100); ?-->

Add Comment