السلام عليكم ورحمة الله وبركاته
كثيرة هي الاحيان التي نبحث فيها على برمجيات وسكربتات لتلبية حاجة مواقعنا على شبكة الانترنت , ولكن ماذا نفعل عندما نبحث عن سكربت معين ولا نجده ؟ او ان نجده ولكن يكون معقدا بحيث لا نعود نريده ونقوم بسحب الفكرة من رؤوسنا !! هذا الدرس للمستوى المتسوط في لغة البرمجة php , ولكني سأحاول تبسيط الشرح لكي يستفيد الجميع باذن الله .
هكذا بالضبط حدث معي عندما اردت ان ابحث عن سكربت قائمة بريدية لاقوم بتركيبه لاحد الزبائن ووجدت السكربت ولكني وجدته معقدا جدا ولا يحتاج لكل هذه الخصائص والازرار والمتغيرات , لذلك , قمت بعمل برمجية صغيرة تقوم محل القائمة البريدية وهي فكرة بسيطة جدا ولكنها تفي بالغرض تماما .
الفكرة هي باختصار عبارة عن تخزين عناوين البريد الالكتروني في ملف نصي في الموقع , عند كل اضافة لعنوان جديد من قبل مستخدم جديد , فان الملف يتغير ويضيف البريد الاخير لقائمة العناوين التي يحويها الاخير , قد يقول البعض ما الفائدة من ذلك ؟؟ , اقول بان هذه الطريقة تساعد على ارسال الرسائل لكل منتسبي القائمة البريدية من خلال البريد الشخصي لمدير الموقع , ان كان في هوتميل او ياهو او بريد جوجل , وهنا مشكلة اخرى تاتي بان كل من هذه الخدمات البريدية يمكن فيها ارسال رسالة ل50 شخص فقط دفعة واحدة وليس اكثر من ذلك ( هذه المعلومة صحيحة بحال استعمال بريد جوجل ) , ايضا لهذه المشكلة يوجد حل , فصاحب الموقع يستطيع ان يقسم الملف الى اكثر من مجموعة , بمعنى انه يستطيع ان يفصل كل 50 عنوان بريد بواسطة فاصلة وهي عبارة عن سطرين للأسفل , بهذه الطريقة اذا كان الملف يحوي 150 عنوان بريد , فان الملف سيتقسم الى 3 مجموعات , في كل مجموعة 50 بريد ويفصل كل عنوان واخر فاصلة , لتكون جاهزة تماما للاستعمال عند ارسالها بالبريد ويفصل كل مجموعة عن الاخرى سطرين لضمان عدم تكرار الارسال لنفس المجموعة .
في البداية نقوم بكتابة كود html الذي سيقوم باستقبال عنوان البريد الالكتروني من صاحبه ثم يرسله الى الكود البرمجي للمعالجة :
كود HTML:
<form id="mlist" method="post" action="mailing-list.php">
البريد الالكتروني
<input name="email" type="text" dir="rtl" />
<p><input name="Submit" type="submit" value="اشترك الآن" /></p>
</form>
طبعا يمكنكم تغير تنسيق هذا الفورم حسب رغبتكم , واذا لاحظتم في بداية الكود فان المعطيات ستذهب الى الصفحة mailing-list.php وهذا يعني اننا يجب ان نقوم بأنشاء صفحة php وتسميتها mailing-list.php لكي نضع الكود التالي بداخلها بهدف المعالجة .
ثم نقوم بكتابة كود الصفحة البرمجية والتي ستقوم بمعالجة الطلب , في البداية نكتب الكود بدون شرح ثم ساضع رابط اسفل الكود لتحميل الملف البرمجي بصيغة php , سيحوي الملف الكود البرمجي والشرح وسيكون الشرح بكل سطر على شكل تعليق برمجي :
كود PHP:
// This Code Wrote BY : EbNCaNa [ebncana(@)hotmail.com]
$group_num = 50;
if(isset($_POST["email"]) && !empty($_POST["email"])){
$email = secu ($_POST["email"],'gtext');
$fcon = fopen('mailing-list.txt', 'a+');
$text = @fread($fcon,filesize("mailing-list.txt"));
$ntext = explode(",",$text);
$mailsnum = count($ntext);
foreach($ntext as $semail){
if($email == $semail){
echo "عذرا البريد الالكتروني الذي ادخلته موجود مسبقا في قاعدة البيانات";
$order = "stop";
}
}
$mailsnum = $mailsnum-1;
if($order !== "stop"){
$numn = $mailsnum+1;
if(is_int($numn/50)){
$writem = fwrite($fcon,"$email
,");
}else{
$writem = fwrite($fcon,"$email,");
}
if($writem){
echo "شكرا لك , تمت اضافة بريدك الالكتروني الى قائمتنا البريدية بنجاح";
}
}
fclose($fcon);
}else{
echo "الرجاء قم بادخال البريد الالكتروني";
}
طبعا كما تكلمنا مسبقا , يمكنكم تحميل الملف البرمجي الاصلي والذي يحوي الشرح الوافي للكود , اضغط على الصورة في الاسفل لتحميل الملف .
طبعا كما عهدناكم دائما , فهذا الكود لن يبقى بأيديكم كمان هو , وضعنا الزبدة كالعادة , اذ يمكن التطوير على هذا الكود ليصبح فعال اكثر بكثير مما هو عليه الان , قمنا بتطبيق فكرة حفظ العناوين بداخل ملف نصي , الان يمكنك التفنن في الكود وتحسينه , مثلا يمكننا اضافة حقل الى كود الـ html لتخزين الاسم بداخله , يمكن ان نقوم بادخال بريد الشخص واسمه الكامل لكي نرسل الرسالة باسمه , يمكننا ايضا عمل قائمة منسدلة فيها خيارين , واحد لاضافة البريد وآخر لازالة البريد بحالة كان موجود في القائمة ورغب صاحبه بحذفه , بسهولة يمكن تطبيق هذه الامور , وانا سأترك لكم المجال للأبداع , وكما قلنا ونقول دائما , نرجوا من الجميع عدم كتمان ما يملكونه في جعبتهم من علم , فكما زكاة المال , هناك زكاة للعلم , واقل القليل هو ان نساهم بشي للنهوض بامتنا .
الى اللقاء في درس آخر .
الموضوع الأصلي من هنا
باحترام : اخوكم EbNCaNa