[ظ„ظ„ظ…ط¨طھط¯ط¦ظٹظ† : ط¯ط§ظ„ط©] StrRandom ظ„ط§ظ†ط´ط§ط، ظƒظ„ظ…ط§طھ ط§ظ„ط³ط± ط§ظ„ط¹ط´ظˆط§ط¦ظٹط©



الدالة على طول

رمز 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>

ثم قمت بانشاء متغير &quot;فاضى&quot; لكى يحتوى على ال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 .. لكن الدالة تعتبر مشروحة هنا وسهلة نوعا ما ..

((اول موضوع لى فى البرمجة فى ديزاد باتنة ))

شكرا

سلام عليكم






الملفات المرفقة [TR]
StrRandom.zip (819 بايت, عدد مرات المشاهدة 46 مرة) [/TR]



©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى©