صفحة 2 من 4 الأولىالأولى 1234 الأخيرةالأخيرة
النتائج 16 إلى 30 من 46

الموضوع: مسابقة برمجة (2) عدد المتواجدين الآن

  1. #16
    عضو نشيط
    تاريخ التسجيل
    Mar 2005
    المشاركات
    281


    أخ ncE بارع Pri
    انا استخدمت الكود الي أنت عملته
    ولكنه عند كل تحديث يزيد عدد الزوار ؟؟

    انا سأحاول برمجة واحد ,,
    وشكرا






  2. #17
    عضو نشيط
    تاريخ التسجيل
    Mar 2005
    المشاركات
    281


    السلام عليكم ،،
    ممكن نستخدم هذه الطريقة

    كود PHP:
    CREATE TABLE moonps_online (
       
    ID int(9not null auto_increment,
       
    timein int(15not null ,
       
    onlinep varchar(200not null,
       
    title varchar(200not null,
       
    PRIMARY KEY (ID),
    ); 
    و php

    كود PHP:
    <?php
    //including config
    include("includes/config.php");
    $timeout1 300;


    // the time
    $times time();
    $timeout $times-$timeout1;

    setcookie("test" 'test' time()+300);
    if (
    $_COOKIE['test'])
    {
            
    # Don't do any thing
    }
    if (!
    $_COOKIE['test'])
    {
            
    $mm mysql_query("insert into moonps_online values('null','$timestamp','null','null')");
            }
            
    //delete values when users leaves !!
    $delete mysql_query("DELETE FROM moonps_online WHERE timein<'$timeout'");
    if(!(
    $delete)) {
    print 
    "Con't delete";
    }

    $good mysql_query("Select ID from moonps_online");
    $on mysql_num_rows($good);

    //The results

    if($on == 1)
    {
            echo 
    "one user online";
    }
    else
    {
            echo 
    "$user users online";
    }
    mysql_close();
    ?>
    الشرح : زراعة كوكي حتى لا يتم تحديث الزوار لنفس الزائر !!
    وعن طريق هذا الكود يمكنك ان تدخل مكان التواجد وصفحة التواجد و عنوان صفحة التواجد
    بتغيير قيمة المدخلات اذا لاحظت انا واضع اغلبها null

    شكرا






  3. #18


    السلام عليكم،

    قمت بكتابة الملف التالي:
    كود PHP:
    <?php
    /*
    الملف: mCounter.php
    الوصف: ملف لحساب عدد المتواجدين الآن.
    المبرمج: MOBARMEG <mobarmeg[at]mobarmeg[dot]com>
    */
    // ####### انشاء الجلسة #######
    // اسم الجلسة: mCounter
    session_name('mCounter');
    // بدء الجلسة
    session_start();

    // ####### بدء السكربت #######
    // انشاء تواجد للكائن mCounter
    /*
    تم تمرير:
       mCount.tmp.folder  كمجلد للملفات المؤقتة
       60                 التحديث كل 1 دقيقة
    */
    $mCounter =& new mCounter('mCount.tmp.folder'60);

    // طباعة عدد الزوار
    echo $mCounter->getVisitors();

    // ####### الكائن mCounter #######
    class mCounter
    {
     
    // متغيرات داخلية
     
    var $_SESSION;
     var 
    $_file;
     var 
    $_time;
     var 
    $_fp;
     var 
    $_add;

     
    // الـ Constructer
     /*
     البارامترات:
                 +$file: المجلد المؤقت    الزامي
                 -$time: الوقت            غير الزامي
     */
     
    function mCounter($file$time=60)
     {
      
    // جعل قيمة المتغير الداخلي _add تساوي 0
      
    $this->_add 0;

      
    // جعل قيمة المتغير المحلي _SESSION هي نفسها قيمة مصفوفة الجلسات $_SESSION
      
    $this->_SESSION =& $_SESSION;

      
    // جعل قيمة المتغير المحلي _time قيمة البارامتر $time
      
    $this->_time $time;

      
    // التحقق من الملف المؤقت السابق
      
    if(file_exists($file.'/'.date('i'time()-$time)))
      {
       
    // حذف الملف المؤقت السابق
       
    @unlink($file.'/'.date('i'time()-$time));
      }

      
    // وضع قيمة ملف مؤقت في المتغير المحلي _file
      
    $this->_file $file.'/'.date('i'time());

      
    // استدعاء _Count()
      
    $this->_Count();

      return 
    true;
     }

     function 
    _Count()
     {
      
    // التحقق من عدم تسجيل قيمة في الجلسة أو أن القيمة المسجلة أقدم من وقت التحديث أو أن الملف المؤقت غير موجود
      
    if(!$this->_getSession('mCount') || ((time()-$this->_getSession('mCount')) > $this->_time) || !file_exists($this->_file))
      {
       
    // استدعاء _AddCount
       
    $this->_AddCount();

       
    // جعل قيمة متغير الجلسة mCount تساوي الوقت الحالي
       
    $this->_setSession('mCount'time());
      }

      return 
    true;
     }

     function 
    _AddCount()
     {
      
    // فتح الملف المؤقت للقراءة والكتابة كملف ثنائي والبداية من نهاية الملف
      
    $this->_fp fopen($this->_file'a+b');
      
    // ترك مسافة 1 بايت
      
    fseek($this->_fpfilesize($this->_file)+1SEEK_CUR);
      
    // كتابة في مكان البايت الحالي
      
    fwrite($this->_fpchr(1));
      
    // اغلاق الملف
      
    fclose($this->_fp);

      
    // جعل قيمة المتغير الداخلي _add تساوي 1
      
    $this->_add 1;
     }

     function 
    _getSession($INDEX)
     {
      
    // ارجاع قيمة متغير الجلسة إن وجد
      
    return (isset($this->_SESSION[$INDEX]) ? $this->_SESSION[$INDEX] : false);
     }

     function 
    _setSession($INDEX$VALUE)
     {
      
    // تغيير قيمة متغير الجلسة المفهرس بالبارامتر $INDEX وجعل قيمته تساوي البارامتر $VALUE
      
    $this->_SESSION[$INDEX] = $VALUE;

      return 
    true;
     }

     function 
    getVisitors()
     {
      
    // ارجاع حجم الملف المؤقت الحالي
      
    return ($this->_add == 1) ? filesize($this->_file)+filesize($this->_file);
     }
    }
    ?>
    طريقة الإستخدام: في الملف تم تحديد المجلد mCount.tmp.folder كمجلد مؤقت .. حيث يجب أن يكون تصريح هذا المجلد 777

    في الملف الذي وضعته جعلته يقوم بطباعة عدد الزوار.. تستطيع التحكم بالمخرجات .. مثلاً جعلها على شكل JavaScript لكي تستدعى من ملف html !

    عيب السكربت: ان السكربت يعتمد في انشاء الملفات على عدد الدقائق.. حيث ينشىء لكل دقيقة ملف مؤقت.. وهو يقوم بحساب عدد الزوار بحيث يضيف 1 بايت لكل زائر جديد!

    مثال:
    http://me.mobarmeg.com/mCounter.php

    الملف المصدر:
    http://me.mobarmeg.com/mCounter.phps





    __________________
    ArabBB ... SoooooN!

  4. #19
    عضو نشيط
    تاريخ التسجيل
    Sep 2004
    المشاركات
    189


    ما يصح الي الصحيح

    مثال:
    http://me.mobarmeg.com/mCounter.php

    الملف المصدر:
    http://me.mobarmeg.com/mCounter.phps






  5. #20


    أرجوكم الان قولو لي ايش الكود الصح الذي استخدمه

    لانه عدد الزورا أسبوعياً لايقل عن 10000 زائر

    ايش الحل يا انترنت بلس






  6. #21
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    أحمد انتظر شوية بس ندرس السكريبتات الموجودة واحد واحد وننقحهم ونصل إن شاء الله لأفضل الطرق .. أوكي؟

    عاشق القمر
    لو عندك عنوان لتجربتك لاسكريبت بارع ياريت تنشره .. لأنه أنا شايف انه مش بيزود واحد مع كل رفرش ..
    ملاحظاتي السريعة على سكريبتك:
    1- لماذا تستخدم 2 if؟ استخدم if و else .. هذا أفضل للسيرفر من ناحية ويعتبر إضافة أمر دون جدوى من ناحية أخرى ..
    2- إذا لم يتم الحذف فلماذا ستظهر رسالة خطأ؟ بعد استخدام delete وupdate إذا كانت النتيجة عدم وجود $delete فهذا ممكن يعني أنه لم توجد صفوف لحذفها .. إذن لا داعي لإظهار رسالة ..
    3- أعجبني جدا استخدامك لجملة السيليكت مع id ثم حساب العدد بدالة قواعد البيانات mysql_num_rows .. هذا أخف على السيرفر 100 مرة من استخدام count في السيليكت ..
    4- برضو زي ما قلت من قبل كده استخدام delete مع كل زائر رهيبة على السيرفر إذا كان عدد الزيارات كبيرا ..





    __________________
    ....
    محمد حسام
    انترنت بلس

  7. #22


    بإذن الله البرمجه هذه فيها الحل لجميع المشاكل ..

    الأخ البـ أحمد ـرنس : مع التعديلات الاخيرة لن يكون هناك اي مشاكل .. تجد في المرفقات السكربت مجهز .. فقط قم بتشغيل الملف example.php ..

    ** والمصدر موجود أمامكم لمن كان له تعليق ..

    أنشأ قاعدة بيانات باسم available وضع فيها :

    كود PHP:
    CREATE TABLE available 
          
    BRa INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
          
    time_entry int(20NOT NULL default'0' 
    المصدر كاملاً :

    كود PHP:
    <?php
    ###################################################
    //            سكربت عدد المتواجدين             //
    //           برمجة عبدالعزيز السعيد            //
    //        Email : bar3_sa(at)hotmail.com         //
    //  Powered By (Pri بارع ncE) Copyright © 2005   //
    ###################################################

    //======================config.php====================//

    // === خاص بقاعدة البيانات === //
    $dbserver "localhost"// اسم السيرفر  //
    $dbname "available"// اسم قاعدة البيانات //
    $dbuser "root"// اسم المستخدم لقاعدة البيانات //
    $dbpss ""// كلمة المرور لقاعدة البيانات //

    // === هذه البرمجه هي طريقة الدخول لقاعدة البيانات === //
    $DBC = @mysql_connect("$dbserver""$dbuser""$dbpss");
    if (!
    $DBC) {
        echo 
    "يوجد خطأ في سيرفر الموقع !!";
        exit();
    }

    $DBS = @mysql_select_db("$dbname");
    if (!
    $DBS) {
        echo 
    "يوجد خطأ في قاعدة البيانات !!";
        exit();
    }
    //====================End config.php==================//


    //======================class.php=====================//

    // بداية class
    class available {

        
    // متغيرات داخلية .. الرسالة - التوقيت
        
    var $msg$timerec$time_guest$number_guest;

        
    // دالة الحسابات
        
    Function available($msg,$timerec){
        
            
    // تعريف المتغيرات الوقت والرقم
            
    $this->msg $msg;
            
    $this->timerec intval($timerec);
            
    $this->time_guest intval($_COOKIE['time_guest_bar3']);
            
    $this->number_guest intval($_COOKIE['number_guest_bar3']);

            
    // تعريف متغير بالوقت
            
    $this->time time();
            
            
    // حذف الزوار الذين خرجوا أو مضى عليهم وقت
            
    @mysql_query("DELETE FROM available WHERE time_entry<".$this->time);

            
    // إفراغ الجدول إذا كان الزوار صفر
            
    IF ($this->num() == 0){
                @
    mysql_query("TRUNCATE `available`");
            }

            
    // يتم التدخول إلى هنا إذا كان الزائر جديد أو مضى عليه وقت
            
    IF ($this->time_guest == "" OR $this->time_guest $this->time){

                
    // إضافة زائر جديد
                
    @mysql_query("INSERT INTO available SET time_entry=".$this->time."+".$this->timerec);

                
    // إستدعاء رقم الزائر
                
    $this->result = @mysql_query("select max(BRa) from available");
                
    $this->row mysql_fetch_array($this->result);
                
    $this->BRa $this->row[0];

                
    // تسجيل وقت الدخول و رقم الزائر
                
    setcookie ('time_guest_bar3'$this->time+$this->timerectime() + $this->timerec);
                
    setcookie ('number_guest_bar3'$this->BRatime() + $this->timerec);

            }
            
    // يتم دخوله إلى هنا إذا لم يدخل في الأعلى
            
    Else {
                
    // تجديد الوقت لزائر سابق
                
    @mysql_query("UPDATE available SET time_entry=".$this->time."+".$this->timerec." WHERE BRa=".$this->number_guest);

                
    // تسجيل وقت دخول جديد للزائر
                
    setcookie ('time_guest_bar3'$this->time+$this->timerectime() + $this->timerec);
            }

        }

        
    // دالة حساب الموجودين
        
    Function num(){
            
    // الإتصال بقاعدة البيانات لمعرفة عدد المتواجدين
            
    $this->result = @mysql_query("Select * From available");
            
    $this->guests = @mysql_num_rows($this->result);
            
            return 
    intval($this->guests);
        }

        
    // دالة النتيجة النهائية
        
    Function viewers(){
            return 
    $this->msg." ".$this->num();
        }
    }
    //====================End class.php===================//


    //====================example.php=====================//

    /* تسجيل اسم الكائن بالمتغير
    الخانة الأولى - الرسالة التي تظهر قبل عدد المتواجدين
    الخانة الثانية - مدة تسجيل الزائر
    */
    $Bar3 = new available('مرحباً بك أخي الزائر .. المتواجدين حالياً',120);

    // طلب الدالة النهائية
    echo "<div align='center'>
            <font face='Tahoma' size='2'>
                "
    .$Bar3->viewers()."
            </font>
         </div>"
    ;
    //==================End example.php===================//

    ?>
    وللتـــــــــــــــــــــجـــــــــــــــــــربـــ ــــــــــــــــــــــــــــة إضغط هنا ..

    المرفقات السكربت مجهز للإستعمال ..

    وتقبلوا تحياتي : عبدالعزيز





    الملفات المرفقة الملفات المرفقة
    __________________

    ألا في سبيل الله ما أنا فاعل - - - عطاء وإقدام وحزم ونائل


  8. #23
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    طريقة أخي المبرمج ذكية وجديدة
    وأعتقد أنها ستعمل بصورة جيدة دون أخطاء ..
    الملاحظة الوحيدة هي أن التعامل مع الملفات يأخذ وقتا من السيرفر أحيانا يكون أضعاف الوقت اللازم في قواعد البيانات .. ولذلك ستكون هناك مشكلة مع المواقع الكبيرة .. أعتقد ان فيه في السكريبت تأكد من وجود الملف كل مرة يشتغل السكريبت ..
    أذكر مرة وضعت سكريبتا لحذف الصور في موقع بعضويات .. جزء أخذ البيانات من قواعد البيانات لم يكن يأخذ وقتا على الإطلاق ليحضر لي مثلا 3000 شخص يجب حذف صورهم .. اللوب التي عملتها لحذف الملفات كانت تحذف حوالي 15 ملف في 30 ثانية (وقت طويل جدا بالنسبة للسيرفر) مما سبب مشكلة للسيرفر .

    إذن .. أعتقد أن مشكلتنا في التعامل مع السكريبتات (على المواقع الكبيرة) ستكون البطء .. أما مشكلتنا مع قواعد البيانات استخدام update وdelete كثيرا يسبب تراكم الاوفرهيد مما يبطئها مع الوقت ..





    __________________
    ....
    محمد حسام
    انترنت بلس

  9. #24
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    هنا حل سريع .........
    كود PHP:
    <?php

    session_start
    ();
    //وضع متغير في الجلسه لكي يتم التعرف عليها فيما بعد
    $_SESSION['daif'] ="ok";
    //ملفات الجلسات تخزن في مجلد tmp
    $dir dir("/tmp");
    while (
    $fn $dir->read()) {
    //نقرأ الملفات ونتأكد من أنها ملفات جلسه وتاريخها التعديل عليه أقل 60
        
    if( (substr($fn,0,4) == "sess") AND (time()-filectime("/tmp/$fn") <= 60) ) {
            
    $data implode('',file("/tmp/$fn"));
            
    //نتأكد من القيمة التى في الملف
             
    if(substr($data,0,4) == "daif"){
            
    $user++;
            }
        }
    }
    $dir->close();

    print 
    $user;

    ?>
    http://daif.net/script/session.php





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  10. #25
    عضو نشيط
    تاريخ التسجيل
    Mar 2005
    المشاركات
    281


    اخي انترنت بلس
    لو عندك عنوان لتجربتك لاسكريبت بارع ياريت تنشره .. لأنه أنا شايف انه مش بيزود واحد مع كل رفرش ..

    آسف هذا كان على السيرفر الشخصي وانا متأكد من ذالك !!

    بالنسبة لif فانت صادق و ايضا للجملة الشرطية فأوافقك الرأي ايضا

    بالنسبة للجملة delete ؟؟ هات حل لها ؟






  11. #26
    عضو نشيط
    تاريخ التسجيل
    Mar 2005
    المشاركات
    281


    أخ Daif
    بالنسبة للمثال الي أنت واضعه
    لا يظهر نتيجة من أول مرة ؟






  12. #27
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037



    حاضر .. أنا بس باعتذر عن قلة تواجدي هذه الأيام لانشغالي الشديد .. وسوف أعود بإذن الله ..





    __________________
    ....
    محمد حسام
    انترنت بلس

  13. #28


    تعديلات بسيطة على الكود الذي وضعه الأخ ضيف..

    1) أنا في جهازي حددت أن ملفات الجلسات تخزن في /home/mobarmeg/php_session .. فالكود لن يشتغل معي بكل تأكيد!
    2) عند انشاء ملف الجلسة لن يتم حسابه أول الأمر .. لذا يجب أن تزيد 1 على عدد الملفات.

    كود PHP:
    <?php

    session_start
    ();
    $FILE 0;
    if(!
    $_SESSION['daif'] || ((time()-$_COOKIE['time']) > 60))
    {
     
    //وضع متغير في الجلسه لكي يتم التعرف عليها فيما بعد
     
    $_SESSION['daif'] ='ok';

     
    $_COOKIE['time'] = time();
     
    $FILE 1;
    }
    // جلب مجلد الجلسات
    $dir session_save_path();
    while (
    $fn $dir->read()) {
     
    //نقرأ الملفات ونتأكد من أنها ملفات جلسه وتاريخها التعديل عليه أقل 60
        
    if( (substr($fn,0,4) == "sess") AND (time()-filectime("/tmp/$fn") <= 60) ) {
            
    $data implode('',file("/tmp/$fn"));
            
    //نتأكد من القيمة التى في الملف
             
    if(substr($data,0,4) == "daif"){
            
    $user++;
            }
        }
    }
    $dir->close();

    $user $user $FILE;

    print 
    $user;

    ?>






    __________________
    ArabBB ... SoooooN!

  14. #29


    حياكم الله أخواني
    انا الان أريد أركب طريقة الاخ بارع
    بس لسه الاخ انترنت بلس والمبرمجين
    ايش هي الطريقة الصح يعني الذي مايحدث فيه أخطاء
    لاننا أريد أن أركبها في موقع إسلامي ومش ناقصين أخطاء في التصفح
    فأرجوكم طريقة حلوة وسهلة والله يعينكم






  15. #30


    عفوأً للرفع

    بس كان ضروري علشان انا راكن عليكم

    لاننا ابي أركب هذا الطريقة على موقعي

    وخالص تحياتي لكم










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض