الرئيسية > برمجة > كيف تنشئ كلمة سر عشوائية بإستخدام PHP

كيف تنشئ كلمة سر عشوائية بإستخدام PHP


السلام عليكم و رحمة الله و بركاته
أحيانا في سكريبتاتك يكون يعتمد نظام تفعيل بالبريد أو إسترجاع كلمة مرور إما لأسباب أمنية أو أن كلمة السر للمستخدم تكون مشفرة في قاعدة البيانات لهذا تلجأ غلى إنشاء كلمة سر مؤقتة ترسلها له عبر البريد ،اليوم سنتعرف على طريقة فعل ذلك بإستخدام PHP حيث سنعتمد في ذلك على دالة من إنتاجنا إسمها generate_password($length) تأخذ وسيطا و هو حجم كلمة السر المراد إنتاجها .

<?php
 function generate($length)
  {
   $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   $len = strlen($chars);
   for ($i=0;$i<$length;$i++)
     $rand .= substr($chars, rand(1, $len), 1);

   return $password;
  }

 echo generate_password(10);
?>

فكرة هذه الدالة أننا أولا نقوم بتعريف الحروف التي نريد من كلمة السر خاصتنا أن تكون فيها كما ترون في السطر 4 بعدها نقوم بإختيار حرف عشوائي من ذلك المتغير بإستخدام الدالة rand التي تأخذ وسيطين الأول هو بداية الرقم الذي نأخذ منه و الوسيط الثاني هو آخر رقم من الممكن أن نصل إليه مثلا لو إخترنا 10،15 فإنها ستعيد لنا رقما من 10 إلى 15 و هكذا .
قد تلحظون أننا إستخدمنا متغير بإسم len$ في السطر 7 الذي هو طول السلسلة التي عرفنها في السطر 4 هذا يعني أن الدلة rand ستعيد لنا قيمة من 1 إلى عدد سلسلة الحروف التي عرفنها أما إستخدامنا للدالة substr هو لأخذ حرف واحد فقط من سلسلتنا حيث تأخذ 3 وسائط الأولى الكلمة التي نريد أن نأخذ منها و الوسيط الثاني الموقع في السلسلة التي نريد البدأ الأخذ منه أما الوسيط الثالث فهو عدد الحروف التي نريد أن نأخذ منها فلو كتبنا :

echo substr(“bblog”,1,4);

فإنها سوف تعيد لنا blog بهذا فإن المتغير password$ يأخذ حرفا و يقوم بإضافته مع الحرف السابق بسبب النقطة الموجودة قبل علامة المساواة في السطر 7 ،أما إستخدامنا للحلقة for في السطر 6 فهو لتحديد طول كلمة السر الخاصة بنا إعتمادا على وسيط الدلة length$ .
أخيرا في السطر 9 نقوم بإرجاع كلمة السر للمستخدم أما السطر 12 فهو معروف للجميع ،أتمنى أن أكون قد وفقت في إيصال المعلومة .

التصنيفات :برمجة الوسوم:
  1. سيف
    15 أغسطس 2009 الساعة 8:50 ص

    السلام عليكم و رحمة الله تعالى و بركاته ,,
    أظن لا تحتاج كل هذه التعقيد ..
    يمكنك إستخدام دالة rand
    مثال :
    rand(100000, 1000)
    حيث 100000 هي أقصى عدد
    و 1000 أصغر عدد
    و الدالة سوف تقوم بإعطاء عدد عشوائي ما بين هذين العددين.
    شكراا لك على الإفادة🙂

  2. 15 أغسطس 2009 الساعة 12:22 م

    و عليكم السلام و رحمة الله و بركاته
    إستخدام الدالة rand سيعطيك كلمة متكونة من أرقام فقط أما إستخدام الطريقة السابقة فهة سيتيح لك كلمة مختلطة من أرقام و حروف حيث أنه يمكنك أيضا إضافة رموز لكلمة السر و ذلك بإضافة رموز إلى المتغير chars$ في السطر 4 .

  3. 17 أغسطس 2009 الساعة 5:18 م

    كنت قد عملت توليد كلمات سريه من قبل وأضعها بين يديكم بعد إذن أخوي سيف🙂
    هذه الداله تقوم بإنشاء كلمة سر تحتوي على أرقام فقط أو حروف وأرقام ويمكن عملها لإنتاج حروف فقط فالأمر بسيط …
    [code]
    function makerandom($len,$justnumber=0){
    $arr=array("a","b","c","d","e","f","g","h",
    "i","j","k","l","m","n","o",
    "p","q","r","s","t","u","v","w",
    "x","y","z","1","2","3","4","5","6","7","8",
    "9","0");
    for($i=0;$i<$len;$i++)
    {
    if($justnumber){ $return .= $arr[rand(0,count($arr)-11)]; }else{
    $return .= $arr[rand(0,count($arr))];}
    }
    return $return;
    }

  4. 17 أغسطس 2009 الساعة 6:19 م

    السلام عليكم و رحمة الله و بركاته
    و لما الإذن يا أخي basr3 فالمدونة للفائدة العامة بعد أن تكون مدونتك😀 .
    شكرا على مشاركتك للمعرفة .

  5. 30 أغسطس 2009 الساعة 11:10 م

    أكيد حتكون مدونتي🙂 بس خليني أفضى شويه الظاهر فيها معلومات قيمه بارك الله بك

  6. عيسى المحمدي
    24 أبريل 2014 الساعة 4:28 م

    مشكورين على المعلومات القيمة

  1. 3 ديسمبر 2009 الساعة 11:10 ص

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: