الدالة على طول
رمز PHP:
<code style="white-space:nowrap"> <code>
//Generate a Random String
function StrRandom($req = 6) //The Random string will be of the size $req
#By Galal Aly (Written from scratch) hah kan nefsy aktebha men zaman 
{
//The Random String will be generated using this set of characters
$SetOfCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmn opqrstuvwxyz_";
//Generate ba2a
$len = strlen($SetOfCharacters);
//The $rand variable will contain our string
$rand = "";
for ($i = 1; $i <= $req; $i++) {
$teet = rand(0, $len - 1);
$rand .= substr($SetOfCharacters, $teet, 1);
}
return $rand;
}
</code> </code>
أولا : فائدة الدالة
الدالة ليها فوائد كثير تقريبا كل المبرمجين عارفينها .. فهى تستخدم مثلا فى انشاء كلمات السر العشوائية او فى الSession hash ... الخ
طريقة عمل الدالة :
المتغير
رمز PHP:
<code style="white-space:nowrap"> <code> $SetOfCharacters
</code> </code>
يحتوى على الحروف اللى الكود code هيعمل منها الString العشوائى وكما تلاحظ فيها كل الحروف تقريبا ..
المتغير
رمز PHP:
<code style="white-space:nowrap"> <code> $req
</code> </code>
يحتوى على عدد الحروف فى الString العشوائى الذى نريد انشاءه .. وهو افتراضيا 6 .. و من الممكن تعديله طبعا سواء عن طريق الdefault value فى الدالة نفسها
رمز PHP:
<code style="white-space:nowrap"> <code> function StrRandom($req = 6)
</code> </code>
او عندما نقوم باستدعاء الدالة
رمز PHP:
<code style="white-space:nowrap"> <code> StrRandom(32);
</code> </code>
ثانيا : ازاى نعمل الدالة دى؟
الProcedure المتبع هو اننا بنحدد الحروف اللى احنا عايزينها فى متغير .. وده اللى عملناه فى السطر ده
رمز PHP:
<code style="white-space:nowrap"> <code> $SetOfCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmn opqrstuvwxyz_";
</code> </code>
ثم قمنا بمعرفة عدد الحروف فى المتغير SetOfCharacters عن طريق الدالة strlen
رمز PHP:
<code style="white-space:nowrap"> <code> $len = strlen($SetOfCharacters);
</code> </code>
ثم قمت بانشاء متغير "فاضى" لكى يحتوى على الRandom String عند الانتهاء
رمز PHP:
<code style="white-space:nowrap"> <code> $rand = "";
</code> </code>
ثم قمت بعمل loop تقف عند الوصول الى عدد الاحرف المحدد فى المتغير $req
رمز PHP:
<code style="white-space:nowrap"> <code> for ($i = 1; $i <= $req; $i++)
</code> </code>
المتغير $teet :
يحتوى على رقم عشوائى بين الصفر وعدد الاحرف فى المتغير SetOfCharacters ناقص واحد .. ليه ناقص واحد؟ لأن أول حرف فى الString رقمه صفر وليس واحد .. يعنى اما ابدأ اعد الحروف هاعد من الصفر واحد اتنين تلاتة اربعة (خمس ارقام لأننا حاسبين الصفر) بينما الدالة التى تأتى لنا بعدد الاحرف تبدأ من الواحد لذلك نريد ان ننقص واحد حتى لا نطلب حرف غير موجود اصلا ويحدث خطأ.
رمز PHP:
<code style="white-space:nowrap"> <code> $teet = rand(0, $len - 1);
</code> </code>
ثم باستخدام الدالة substr وهى تقوم بقطع المتغير SetOfCharacters عند الرقم العشوائى teet وتقوم بارجاع حرف واحد فقط .. نقوم بتزويده على المتغير rand
رمز PHP:
<code style="white-space:nowrap"> <code> $rand .= substr($SetOfCharacters, $teet, 1);
</code> </code>
وتتكرر العملية عدد req مرات ليصبح لدينا المتغير rand يحتوى على الRandom String بتاعنا ونقوم بارساله لمن طلبه
رمز PHP:
<code style="white-space:nowrap"> <code> return $rand;
</code> </code>
الدالة اللى فوق دى بطريقة iterative .. ممكن الRecursive يبقى كده :
رمز PHP:
<code style="white-space:nowrap"> <code> function StrRandomRec($req = 6, $rand)
{
#By Galal Aly (Written from scratch)
if ($req > 0) {
$SetOfCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmn opqrstuvwxyz_";
$len = strlen($SetOfCharacters);
$teet = rand(0, $len - 1);
$rand .= substr($SetOfCharacters, $teet, 1);
return StrRandomRec($req - 1, $rand);
} else
return $rand;
}
</code> </code>
ونقوم باستدعاءها عن طريق دالة تانية
رمز PHP:
<code style="white-space:nowrap"> <code> function StrRandomRec2($req) #Where $req is the length of the generated string
{
return StrRandomRec($req, "");
}
</code> </code>
....
الدالة طبعا موجودة فى مواقع تانية وبOptions اكتر زى مثلا numbers only .. لكن الدالة تعتبر مشروحة هنا وسهلة نوعا ما ..
((اول موضوع لى فى البرمجة فى ديزاد باتنة

))
شكرا
سلام عليكم