النتائج 1 إلى 5 من 5
الموضوع:

برمجة سكربت دردشة بالعربى

الزوار من محركات البحث: 982 المشاهدات : 3845 الردود: 4
جميع روابطنا، مشاركاتنا، صورنا متاحة للزوار دون الحاجة إلى التسجيل ، الابلاغ عن انتهاك - Report a violation
  1. #1
    حكاية روح
    تاريخ التسجيل: October-2013
    الدولة: كربلاء
    الجنس: ذكر
    المشاركات: 9,725 المواضيع: 699
    صوتيات: 17 سوالف عراقية: 1
    التقييم: 3847
    مزاجي: حساس + عصبي
    المهنة: موضف حكومي
    أكلتي المفضلة: كل ما احله الله
    موبايلي: Galaxy Note10& iPhone 12pro
    آخر نشاط: 25/January/2024
    الاتصال: إرسال رسالة عبر Yahoo إلى prince karbala
    مقالات المدونة: 20

    برمجة سكربت دردشة بالعربى

    في هذا المقال سيتم انشاء برنامج محادثه بسيط في صفحة ويب باستخدام PHP و jQuer
    هذا الاداة يمكن استخدامها كنوع من الدعم الفني في موقعك.
    برمجة سكربت دردشة بالعربى
    صورة البرنامج بعد الانتهاء من برمجتة سيكون مثل الذي في الصورة اعلاه. سيحتوي على تسجيل الدخول والخروج, خصائص اجاكس
    وسيدعم تعدد المستخدمين.
    الخطوة الاولى صفحة الهوتميل:
    اولا نقوم بانشاء صفحة جديدة باسم index.php
    ونكتب الشفرة التالية به
    كود HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>المحادثة - الدعم الفني</title>
    <link type="text/css" rel="stylesheet" href="style.css" />
    </head>
    
    <body>
    <div id="wrap">
     <div id="menu">
     <p>اهلا, <b></b></p>
     <p><a id="exit" href="#">خروج</a></p>
     <div style="clear:both"></div>
     </div>
    
     <div id="chatbox"></div>
    
     <form name="message" action="">
     <input name="usermsg" type="text" id="usermsg" size="63" />
     <input name="submitmsg" type="submit" id="submitmsg" value="Send" />
     </form>
    
    </div>
    
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript">
     // jQuery Document
       
         $(document).ready(function(){
    
     });
    </script>
    
    </body>
    </html>
    قمنا باضافة عناون الصفحة ورابط
    الى ملف ال css (style.css).
    - داخل body قمنا بكتابة الشكل العام لصندوق المحادثة داخل div #wrapper. سيكون لدينا 3 اقسام بالصفحة: قسم القائمة, وصندوق المحادثة
    وحقل ادخال الرسالة حسب الترتيب التالي:
    * ال #menu div سحتوي على عنصرين الفقرة. الاول عباره عن رساله ترحيبية للمستخدم والتي ستكون على اليمين والفقرة الثانية
    عباره عن رابط الخروج واغلاق صندوق المحادثة
    * ال #chatbox سحتوي على نص الرسائل في الصندوق. وسيتم تحميل النصوص بعد النقر على زر ارسال من ملف خارجي باستخدام
    الاجاكس.
    * العنصر الاخير في #wrapper سيكون نموذج ارسال الرسائل والذي سيحتوي على حقل نصي وزر الارسال.
    - قمنا بكتابة السكربت اسفل الصفحة من اجل تسريع عملة فتح الصفحة. اولا عملنا رابط الى ملف ال jQuery ثم قمنا بتجهيز السكربت للعمل
    وهذا هو المكان الذي سيتم فيه كتابة شفرة الاجاكس. الخطوة الثانية: تنسق الصفحة CSS
    سنقوم الان بتنسيق صفحة المحادثة لكي يظهر بشكل افضل من الشكل الحالي. قم بنسخ والصاق الكود التالي في ملف style.css

    كود HTML:
    #chatbox {
     text-align:left;
     margin:0 auto;
     margin-bottom:25px;
     padding:10px;
     background:#fff;
     height:270px;
     width:430px;
     border:1px solid #ACD8F0;
     overflow:auto; }
    
    #usermsg {
     width:395px;
     border:1px solid #ACD8F0; }
    
    #submit { width: 60px; }
    
    .error { color: #ff0000; }
    
    #menu { padding:12.5px 25px 12.5px 25px; }
    
    .welcome { float:left; }
    
    .logout { float:right; }
    
    .msgln { margin:0 0 2px 0; }
    لا يوجد هناك الشي الكبير مجرد تنسيق صندق المحادثة لكي يظهر بالشكل التالي:
    برمجة سكربت دردشة بالعربى
    كما ترى بالصورة بالاعلى لقد انتهينا من تنسيق وانشاء صفحة المحادثة والتي يتظهر للمستخدم.
    الخطوة الثالثة: استخدام PHP لانشاء نموذج تسجيل الدخول:
    الان سنقوم بانشاء نموذج بسيط لكي نطلب من المستخدم كتابة اسمه قبل الاستمرار والكتابة في صندوق المحادثة

    كود HTML:
    session_start();
    
    function loginForm(){
     echo'
    <div id="loginform">
    <form action="index.php" method="post">
    
    Please enter your name to continue:
    
     <label for="name">Name:</label>
    <input id="name" name="name" type="text" />
    <input id="enter" name="enter" type="submit" value="Enter" />
     </form></div>
     ';
    }
    
    if(isset($_POST['enter'])){
     if($_POST['name'] != ""){
     $_SESSION['name'] = stripslashes(htmlspecialchars($_POST['name']));
     }
     else{
     echo '<span>Please type in a name</span>';
     }
    }
    ?>
    التي تم انشاءها ستسأل المستخدم عن اسم \ اسمها وعند كتابة الاسم نقوم بالتأكد من كتابة المستخدم اسمه.
    اذا كان قام الشخص بادخال اسم سنقوم بتخزين الاسم في $_SESSION['name']. بما اننا سنستخدم الكوكيز لتخزين الاسم يجب تفعيله اولا
    باستخدام session_start() قبل عرض اي شي في الصفحة. يجب ان تلاحظ استخدام الدالة htmlspecialchars() والتي تقوم بتحويل الرموز الى رموز هوتميل وبالتالي حماية متغير الاسم من جعله ضحية
    بكتابة شفرات تدمر الصفحة كنوع من الحماية.
    اظهار نموذج تسجيل الدخول:
    لكي نظهر نموذج تسجيل الدخول للمستخدم الذي لم يسجل دخوله, ولا يوجد كوكيز باسمه نقوم باستخدام دالة شرطية اخرى حول #wrapper
    وفي حالة ان الستخدم قد تم تسجيل دخوله مسبقا سيتم اخفاء صندوق الدخول وسيتم اظهار صندوق المحادثة بدلا منه.

    كود HTML:
    if(!isset($_SESSION['name'])){
     loginForm();
    }
    else{
    ?>
    <div id="wrapper">
    <div id="menu">
    
    Welcome, <strong> </strong>
    
    <a id="exit" href="#">Exit Chat</a></div>
    <form>
    <input id="usermsg" name="usermsg" size="63" type="text" />
    <input id="submitmsg" name="submitmsg" type="submit" value="Send" />
     </form></div>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">// <![CDATA[
    // jQuery Document
    $(document).ready(function(){
    });
    // ]]></script>
    }
    ?>
    قائمة الترحيب وتسجيل الخروج:
    لم ننتهي من نظام تسجيل الدخول لصندوق المحادثة بعد نحتاج ايضا الى تمكين المستخدم من تسجيل الخروج وانهاء الكوكيز.
    اذا تذكر صفحتنا الهوتميل تحتوي على قائمة بسيطة. دعنا ننظر لها ونظيف شفرة php لاعطاء القائمة اكثر فعاليه.
    اولا دعنا نضيف اسم المستخدم الى قائمة الترحيب عن طريق طباعة اسمه من الكوكيز كالتالي

    كود HTML:
    <script type="text/javascript">
    // jQuery Document
    $(document).ready(function(){
     //If user wants to end session
     $("#exit").click(function(){
     var exit = confirm("Are you sure you want to end the session?");
     if(exit==true){window.location = 'index.php?logout=true';}
     });
    });
    </script>
    الشفرة اعلاه ببساطة تظهر رسالة تأكيد انهاء المحادثة وعند قيام المستخدم بتأكيد الانهاء نقوم بتحويله الى الصفحة الرئيسية مع تمرير
    قيمة نعرف عن طريقها بالانهاء وهي كالتالي index.php?logout=true. هذا ببساطه يشنأ لنا متغير باسم logout يحتوي على القيمة true
    نحتاج الى استلام هذا المتغير باستخدام ال PHP

    كود HTML:
     if(isset($_GET['logout'])){
    
     //Simple exit message
     $fp = fopen("log.html", 'a');
     fwrite($fp, "
    <div class="msgln"><em>User ". $_SESSION['name'] ." has left the chat session.</em></div>
    ");
     fclose($fp);
    
     session_destroy();
     header("Location: index.php"); //Redirect the user
    }
    اذا تم تمرير المتغير عبر رابط الصفحة واحتواءه على القيمة true نقوم
    بحذف جميع ملفات الكوكيز لهذا المستخدم.
    قبل انهاء كوكيز المستخدم باستخدام الدالة destroy_session() نقوم بكتابة قيمة تدل على خروجه من المحادثة مثلا ك لقد قام المستخدم بانهاء
    المحادثة. نستخدم في هذه الحالة الدالة fopen() لكي نفتح ملف للكتابه عليه باستخدام fwrite() ثم اغلاق الملف باستخدام الدالة fclose() للملف
    log.html والذي بنراه لاحقا.
    بعد ذلك نقوم بانهاء وحذف الكوكيز لهذا المستخدم ونعيد توجيه الصفحة الى صفحة تسجيل الدخول للمحادثة وسيتم اظهاء نموذج تسجيل الدخول.
    الخطوة الرابعة: التفاعل مع مدخلات المستخدم:
    بعد ارسال المستخدم رساله بالنقر على زر ارسال نريد ان نحصل على النص وكتابته في ملف log.html. ولكي نعمل ذلك يجب استخدام jQuery و
    PHP لكي يعمل تزامنيا بدوت اعادة تحديث الصفحة على كل رساله.
    jQuery:
    تقريبا كل العمل اللي سنقوم به سيعتمد على اداة ال jQuery للتعامل مع البيانات المرسلة من قبل المستخدم.

    كود HTML:
    //If user submits the form
    $("#submitmsg").click(function(){
    var clientmsg = $("#usermsg").val();
    $.post("post.php", {text: clientmsg});
    $("#usermsg").attr("value", "");
    return false;
    });
    قبل عمل اي شي يجب الحصول على الرساله التي قام المستخدم بكتابتها. ويمكن الحصول عليها باستخدام الدالة val() والتي تستخرج القمية
    من قبل الرسالة. بعد ذلك نقوم بحفظ هذه القيمة في متغير من لدينا clientmsg.
    2- هنا يأتي القسم المهم: دالة ارساله الرساله باستخدام jQuery. مهمة الدالة هي ارسال طلب لصفحة معينة باستخدام POST وهذه الصفحة هي
    post.php والتي بنقوم بانشاءها لاحقا.
    3- اخيرا نقوم بتفريغ حقل الرسالة بعد الارسال. PHP – post.php
    في لحظة استقبال الرسالة من POST كل مره يقوم المستخدم بالنقر على زر ارسال يحب الحصول على البيانات المرسلة وكتابتها في ملف المحادثة

    كود HTML:
            session_start();
     if(isset($_SESSION['name'])){
     $text = $_POST['text'];
    
     $fp = fopen("log.html", 'a');
     fwrite($fp, "
    <div class="msgln">(".date("g:i A").") <strong>".$_SESSION['name']."</strong>: ".stripslashes(htmlspecialchars($text))."</div>
    ");
     fclose($fp);
     }
     ?>
    لكي يسمح لنا بالحصول على اسم المستخدم من الكوكيز ولكي نتأكد
    من دخوله غرفة المحادثة
    2- يجب التاكد من دخول المستخدم اولا باستخدام الدالة isset().
    3- الخطوة التالية هي الحصول على القيم التي تم تمريرها الى هذه الصفحة باستخدام jQuer4- y. ونحفظ هذا النص في المتغير $text.
    4- هذه البيانات المرسلة والتي سيتم ارسالها لاحقا من قبل المستخدم ايضا سنقوم بحفظها في ملف المحادثة log.html. ولكي نعمل ذلك
    نقوم بفتح الملف ثم كتابة البيانات عليه بعد اضافة بعض المعلومات لها مثل وقت الاضافة ومن ثم نقوم باغلاق الملف. من الملاحظ هنا ايضا
    استخدام بعض الدوال مثل دالة htmlspecialchars() لكي نحمي انفسنا من الاكواد المضرة بالموقع. الخطوة الخامسة: اظهار نص المحادثة:
    كل ما ارسلة المستخدم تعاملنا معه باستخدام jQuery وقمنا بكتابته في ملف المحادثة باستخدام PHP. الشي الوحيد الذي بقى هو اضهار نص
    المحادثة في صندوق المحادثة والقيام بعملية التحديث كل مره يتم فيها ارسال رساله.
    لكي نوفر بعض الوقت لانفسنا سنقوم بتحميل المحادثة في مربع

    كود HTML:
          <div id="chatbox">if(file_exists("log.html") && filesize("log.html") > 0){
     $handle = fopen("log.html", "r");
     $contents = fread($handle, filesize("log.html"));
     fclose($handle);
    
     echo $contents;
     }
    ?></div>
    استخدمنا نفس الاسلوب المتبع في ملف post.php مع اختلاف بسيط وهو اننا نقوم بالقراءة هذه المره من الملف وعرض المحتويات فقط.
    طلب jQuery.ajax :
    طلب الاجاكس هو نواة كل ما قمنا بعمله حتى الان. هذا الطلب لا يسمح فقط بارسال واستقبال البيانات عبر النموذج بدون اعادة تحديث الصفحة,
    ولكن ايضا يسمح لنا بالسيطره على اي طلب للبيانات

    كود HTML:
    // load the file containing the chat log
     function loadLog(){
     $.ajax({
     url: "log.html",
     cache: false,
     success: function(html){
     $("#chatbox").html(html);&nbsp;&nbsp; &nbsp;// insert chat log into the #chatbox div
     },
     });
     }
    لقد قمنا بكتابة كود الاجاكس داخل دالة loadLog() وقمنا باستخدام ثلاث اومر من الاجاكس فقط وهي:
    url: عباره عن نص الرابط المطلوب. استخدمنا هنا رابط ملف المحادثة log.html
    cache: هذا سيحمي ملف المحادثة من الكاش وذلك للتأكد باننا نحصل على كل تغيير في الملف.
    success: سيسمح لنا باستدعاء دالة والتي سنمرر لها البيانات المرسله والمستقبلة.
    وكما ترى قمنا بكتابة البيانات في صندوق المحادثة #chatbox
    شريط التمرير Auto-scrolling:
    كما هو ملاحظ في برامج المحادثة هو وجود شريط تمرير عند زيادة النص ويتحرك هذا الشريط اليا الى الاسفل عند ارسال رساله جديدة.
    سنقوم بعمل خاصيه بسيطة تؤدي نفس الغرض والتي ستقارن ارتفاع صندوق المحادثة قبل وبعد استدعاء الاجاكس. اذا كان ارتفاع الشريط
    اكثر بعد الاستدعاء سنستخدم دالة الحركة في jQuery وهي الدالة animate لتحريط الشريط.

    كود HTML:
          //Load the file containing the chat log
    function loadLog(){
    var oldscrollHeight = $("#chatbox").attr("scrollHeight") - 20; //Scroll height before the request
    $.ajax({
    url: "log.html",
    cache: false,
    success: function(html){
    $("#chatbox").html(html); //Insert chat log into the #chatbox div
    
    //Auto-scroll
    var newscrollHeight = $("#chatbox").attr("scrollHeight") - 20; //Scroll height after the request
    if(newscrollHeight > oldscrollHeight){
    $("#chatbox").animate({ scrollTop: newscrollHeight }, 'normal'); //Autoscroll to bottom of div
    }
    },
    });
    } 
    في البداية حصلنا على ارتفاع الصندوق الحالي وقمنا بحفظ القيمة في متغير $oldscrollHeight قبل ارسال الرسالة.
    بعد نجاح ارسال الرسالة قمنا ايضا بتخزين ارتفاع الصندوق في متغير جديد باسم $newscrollHeight.
    وعند مقارنة المتغيرين باستخدام الدالة الشرطية, اذا كان newscrollHeight اكبر من oldscrollHeight نستخدم الدالة animate() لتحريك الشريط
    الى الاسفل.
    استمرار تحديث ملف المحادثة:
    سؤال سيطرح نفسه وهو كيف سيتم ارسال البيانات الى ومن المستخدمين؟ او كيف سيتم استمرار ارسال طلبات تحديث البيانات؟

    كود HTML:
    setInterval(loadLog, 2500);    // reload file every 2500 ms 
    الجواب هو استخدام الدالة setInterval() والتي ستعمل على استدعاء دالة الاجاكس loadLog() كل 2.5 ثانية وستقوم دالة loadLog بتحميل
    الملف من جديد وقراءة ماهو جديد.
    الى هنا وصلنا الى نهاية المقال وان شاء الله نكون تعلمنا كيفية انشاء صندوق محادثة مبسط يمكن استخدامه في موقعك الشخصي او موقع
    الشركة كبرنامج دعم فني على سبيل المثال. بامكانك ايضا اضافة خصائص اخرى له مثل الابتسامات وغيرها.
    اتمنى ان ينال المقال اعجابكم وترقبوا مقالات اخرى ان شاء الله.
    ******************************
    ملااااحظه : الدرس منقول

  2. #2

  3. #3
    حكاية روح
    اقتباس المشاركة الأصلية كتبت بواسطة احمد الكرعاوي مشاهدة المشاركة
    شكراً ع الطرح
    عفواا عيووني

  4. #4
    من أهل الدار
    ملائكة وشياطين
    تاريخ التسجيل: November-2012
    الدولة: في المنفى
    الجنس: أنثى
    المشاركات: 21,968 المواضيع: 3,683
    التقييم: 9505
    مقالات المدونة: 66
    شكراا برنس

  5. #5
    حكاية روح
    اقتباس المشاركة الأصلية كتبت بواسطة هدوء الكون مشاهدة المشاركة
    شكراا برنس
    عفوااا هدوء

تم تطوير موقع درر العراق بواسطة Samer

قوانين المنتديات العامة

Google+

متصفح Chrome هو الأفضل لتصفح الانترنت في الجوال