28 Mayıs 2008php str_shuffle fonksiyon kullanımı
Bilindiği üzere php bir fonksiyonlar topluluğudur. İçinde barındırdığı onlarca fonksiyon ile başka hiç bir bileşene ihtiyaç duymadan istediğimiz herşeyi yapabilmekteyiz.
Biz de şimdi o onlarca fonksiyon içinden str_shuffle fonksiyonunu inceleyeceğiz. Nedir bu fonksiyon ne iş yapar bir örnekle açıklayalım.
str_shuffle yani metin (text) karıştırıcısı olarak da söyleyebiliriz. Tam olarak bu fonksiyon kendisine verilen bir metin (string, text) kümesini rasgele karıştırarak bize yeniden sunar.
Bu fonksiyon nereler de işimize yarar ?
Örneğin aktivasyon yöntemi kullanan bir php betiğimizde bu fonksiyon sayesinde kendisine verilen bir metin (string, text) kümesi ile aktivasyon kodumuzu elde edebiliriz…
Örnek:
$string = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuopasdfghjklizxcvbnm0123456789"; $string = str_shuffle($string); echo $string;
örneği denediğiniz de harflerin karıştırılıp bize yeniden sunulduğunu göreceksiniz. Şimdi bu değer ile biz ne yapabiliriz? Bize geri dönen bu değeri md5() fonksiyonundan geçirerek yeni bir değer elde edip aktivasyon kod işleminde kullanabiliriz.
Tabi sadece aktivasyon işlemi için kullanmanıza gerek yok. Aynı örneği unutulan şifre sıfırlamalarında da kullanabilirsiniz… Yani şifre sıfırlandığında yeni bir şifre üretilip kullanıcıya gönderebilirsiniz.
Adı geçen bu fonksiyon PHP 4.3.0 ve yukarı versiyonlarından itibaren vardır.
Konumuzla ilgili örneğe buradan bakabilirsiniz. Sayfayı yeniledikçe harflerin yerlerinin değiştirilip tekrar ekrana çıktı olarak verildiğini göreceksiniz.


Örnegin
$bulamaca=”Yusuf koç sen çok yaşa”;
bir degişken atadık. Bunları kelime olarak rastgele nasıl cıkmasını saglarız.
Bloguna gezerken aklıma bulmaca yapmak aklıma geldide
Güzel olacak sanırım. Tabi senin yardımlarınla
@nurettin
bunun için tüm kelimeleri bir dizide toplamak gerekir.
alfabeyi listeletmek için de range kullanılabilir
$x = range(‘a’,'z’);
$y = implode(”, $x);
$z = str_shuffle($y);
echo $z;
hazır array a almışkende implode edip str_shuffle etmek yerine direkt;
shuffle($x); derdik ayrı mesele iş str_shuffle :p
@saho
sizin tabirinizle o zaman tüm stringleri önce array yapıp sonra sonra shuffle uygulamak lazım ki buda sağ kulağımızı sol elle tutmak gibi bişey oluyor.
son kararın mı tüm stringleri elle yazmak daha mı kolay
hangisi sol elle tutmak (:
ben str_shuffle örneği için yazdım onun yerine direk shuffle yapıp implode ile ekrana basılabilir
$x = range(’a’,’z’);
shuffle($x);
$y = implode(”, $x);
echo $y;
gibi ….
@saho
stringleri neden elle yazasın ki? form veya herhangi bi şekilde aldığın veri zaten string olmuyor mu ? dolayısıyla elde edilen bu stringi neden arraya çevirip sonra shuffle uygulanıp ardından implode edilsin ki ? zaten elimizde bir string var. ben yukarıdaki örnekte evet elle yazdım ama bu demek değildir ki str_shuffle kullanmadan önce stringi elle yazacaz.
şimdi şöyle kullanmak mı daha basit
yoksa şu şekilde kullanmak mı ?
evet karar senin…
ben alfabe için konuşmuştum
örneğin ne bileyim o alfabeyi alıp karıştırıp baştan 5 tanesini alıp güvenlik kodu yapmak amacıyla kullanabilirsin vs.
for ($i=0; $i < strlen($_POST['key']); $i++)
{
$yeni_dizi[] = $_POST['key'][$i];
}
shuffle($yeni_dizi);
ayrıca bunu yeniden neden yeni diziye atasın direk shuffle($_POST['key']) gibi de yapabilirsin :p ama asıl dediğim mesele str_shuffle , shuffle değildi (:
güvenlik kodu dememdeki amac aktivasyon key vs de olabilir ne gerek var derseniz bence gerek yok ama alternatif bir şey olabilir. Ayrıca shuffle diziler için bu stringler için ayrıca shuffle($_POST['key']); uyarı olarak dönecektir.
Neden yeni diziye attığımızı anlatayım. Yeni diziye atmazsak eğer uygulanan shuffle dizi elemanlarının yerlerini karıştırcaktır. Ama bizim konumuz stringler idi..
sen beni anlamadın ben seni hiç anlamadım
salla iyisimi
@saho
bence de uzatmanın bir alemi yok.
anlaşılmayacak bişey yok shuffle diziler için. str_shuffle stringler için