Parsi Coders
تولید عدد تصادفی با تابع php - نسخه قابل چاپ

+- Parsi Coders (http://parsicoders.com)
+-- انجمن: Web Development and Design (http://parsicoders.com/forumdisplay.php?fid=47)
+--- انجمن: PHP Forum (http://parsicoders.com/forumdisplay.php?fid=48)
+--- موضوع: تولید عدد تصادفی با تابع php (/showthread.php?tid=545)



تولید عدد تصادفی با تابع php - Ghoghnus - 07-21-2011

ویژگی مرسومی که در بسیاری از سایت ها در هنگام ثبت نام کاربر انجام می شود، تولید اعداد تصادفی است. در این خودآموز بطور گام به گام روش طراحی اسکریپتی جهت تولید اعداد تصادفی را فرا خواهید گرفت.

برای این اسکریپت تابعی را در php طراحی می کنیم تا بوسیله ی آن بتوانیم اعداد تصادفی تولید کنیم. برای خواندن ادامه ی مطلب حداقل بایستی آشنائی با بعضی توابع در php داشته باشید و تمامی توابع با جزئیات تمام گفته نخواهد شد. (مانند تابع rand، strlen و...)
کد:
function rand_pass_gen($length, $allow = "abcdefghijklmnopqrstuvwxyz0123456789") {
نام تابع را rand_pass_gen گذاشته ایم. البته هر نامی که دوست داشته باشید می توانید برای این تابع برگزینید. تابع ما دو پارامتر را با نامهای length و allow می گیرد. متغیر length طول رمز عبور تولیدی را مشخص می کند و متغیر allow پارامتری اختیاری است. این متغیر تعیین می کند که رمز عبور تولیدی ما از چه کاراکترهائی تولید شود.
کد:
$i=1;

While ($i<=$length) {
این حلقه به تعداد پارامتر ورودی length توسط شما تکرار خواهد شد و بعلاوه در این حلقه هربار یک کاراکتر تولید می کنیم و آنرا به رمز عبور نهائی می افزائیم.
کد:
$max = strlen($allow)-1;

$num=rand(0,$max);
کد بالا عددی تصادفی از بین صفر تا طول متغیر allow منهای یک را تولید می کند. بنابراین اگر 20 کاراکتر داریم عدد تصادفی بین 0 تا 19 تولید خواهد شد، این بدان دلیل انجام می شود که تابع substr که در کد زیر استفاده شده است به اولین کاراکتر رشته با اندیس صفر بجای یک اشاره می کند.
کد:
$temp = substr($allow, $num, 1);
$ret  = $ret . $temp;
در بالا کاراکتری تصادفی از متغیر allow توسط تابع substr انتخاب می شود. این کاراکتر سپس به متغیر ret افزوده می شود که رمز عبور ما خواهد بود.
کد:
$i++;
}
return $ret;  
}
کد بالا حلقه را خاتمه می دهد و رمز عبور تصادفی ما را تولید می کند. حقیقتا خیلی کد ساده ای بود. تابع ما اکنون تمام شد. تمام کاری که اکنون برای انجام دادن داریم این است که تابع را فراخوانی کنیم.
کد:
$password = randomPassword(10);
و در زیر مثالی دیگر را مشاهده می کنید:
کد:
$password = randomPassword(10, '0123456789');
در زیر هم کل تابع را در یکجا مشاده می کنید:

کد:
function randomPassword($length, $allow = "abcdefghijklmnopqrstuvwxyz0123456789") {

    $i = 1;
    while ($i <= $length) {
        $max  = strlen($allow)-1;
        $num  = rand(0, $max);
        $temp = substr($allow, $num, 1);
        $ret  = $ret . $temp;
        $i++;
    }
    return $ret;  
}