07-21-2011، 11:12 AM
ویژگی مرسومی که در بسیاری از سایت ها در هنگام ثبت نام کاربر انجام می شود، تولید اعداد تصادفی است. در این خودآموز بطور گام به گام روش طراحی اسکریپتی جهت تولید اعداد تصادفی را فرا خواهید گرفت.
برای این اسکریپت تابعی را در php طراحی می کنیم تا بوسیله ی آن بتوانیم اعداد تصادفی تولید کنیم. برای خواندن ادامه ی مطلب حداقل بایستی آشنائی با بعضی توابع در php داشته باشید و تمامی توابع با جزئیات تمام گفته نخواهد شد. (مانند تابع rand، strlen و...)
نام تابع را rand_pass_gen گذاشته ایم. البته هر نامی که دوست داشته باشید می توانید برای این تابع برگزینید. تابع ما دو پارامتر را با نامهای length و allow می گیرد. متغیر length طول رمز عبور تولیدی را مشخص می کند و متغیر allow پارامتری اختیاری است. این متغیر تعیین می کند که رمز عبور تولیدی ما از چه کاراکترهائی تولید شود.
این حلقه به تعداد پارامتر ورودی length توسط شما تکرار خواهد شد و بعلاوه در این حلقه هربار یک کاراکتر تولید می کنیم و آنرا به رمز عبور نهائی می افزائیم.
کد بالا عددی تصادفی از بین صفر تا طول متغیر allow منهای یک را تولید می کند. بنابراین اگر 20 کاراکتر داریم عدد تصادفی بین 0 تا 19 تولید خواهد شد، این بدان دلیل انجام می شود که تابع substr که در کد زیر استفاده شده است به اولین کاراکتر رشته با اندیس صفر بجای یک اشاره می کند.
در بالا کاراکتری تصادفی از متغیر allow توسط تابع substr انتخاب می شود. این کاراکتر سپس به متغیر ret افزوده می شود که رمز عبور ما خواهد بود.
کد بالا حلقه را خاتمه می دهد و رمز عبور تصادفی ما را تولید می کند. حقیقتا خیلی کد ساده ای بود. تابع ما اکنون تمام شد. تمام کاری که اکنون برای انجام دادن داریم این است که تابع را فراخوانی کنیم.
و در زیر مثالی دیگر را مشاهده می کنید:
در زیر هم کل تابع را در یکجا مشاده می کنید:
برای این اسکریپت تابعی را در php طراحی می کنیم تا بوسیله ی آن بتوانیم اعداد تصادفی تولید کنیم. برای خواندن ادامه ی مطلب حداقل بایستی آشنائی با بعضی توابع در php داشته باشید و تمامی توابع با جزئیات تمام گفته نخواهد شد. (مانند تابع rand، strlen و...)
کد:
function rand_pass_gen($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;
}
کد:
$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;
}