• آموزش ساخت آمارگیر (کاربران آنلاین)
    #1
    Note 
    سلام
    اگر شما هم وبسایتی دارید یا مشغول طراحی سایت هستید احتمالا قسمت آمار سایت براتون مهمه و یکی از بخشهای سخت آمارگیر بنظر میرسه بخش کاربران آنلاین باشه.
    تو این اموزش میتونید براحتی از کلاسی که برای شما آماده کردیم برای نمایش کاربران آنلاین در سایتتون استفاده کنید.

    مرحله اول - ساخت جدول
    برای شروع باید یک table با نام "online_users" در دیتابیستون ایجاد کنید، برای اینکار از کد زیر استفاده کنید:

    کد:
    CREATE TABLE `online_users` (
    `session_id` char(150) NOT NULL,
    `last_activity` int(11) NOT NULL default '0'
    );

    مرحله دوم -استفاده از کلاس
    حالا فقط کافیه از کلاس SA_USERSONLINE استفاده کنید:
    کد php:
    <?php

    /*
     * Author : Reza Ramezanpour <reza.irdev@gmail.com> 
     * Website: http://softafzar.net
     */
     
    class SA_USERSONLINE
    {

        protected 
    $DB_HOST 'localhost';

        protected 
    $DB_NAME 'test';

        protected 
    $DB_USER 'root';

        protected 
    $DB_PWD '';

        protected 
    $session_id null;

        protected 
    $time null;

        protected 
    $timeout 15;

        protected 
    $link null;

        protected 
    $stmt null;

        function 
    __construct ()
        {
            
    session_start();
            
    $this->session_id session_id();
            
    $this->time time();
            
    $this->link mysqli_connect($this->DB_HOST$this->DB_USER
                    
    $this->DB_PWD$this->DB_NAME);
        }

        
    /**
         * Gets current online users
         */
        
    function get_online_users ()
        {
            
    $this->delete_update_onlineusers();
            
    $this->insert_onlineusers();
            
    $this->stmt mysqli_query($this->link
                    
    'SELECT session_id FROM online_users');
            return 
    mysqli_num_rows($this->stmt);
        }

        function 
    already_registred ()
        {
            
    $this->stmt mysqli_query($this->link
                    
    "SELECT session_id FROM online_users WHERE session_id='$this->session_id'");
            if (! 
    $this->stmt || mysqli_num_rows($this->stmt) <= 0)
                return 
    false;
            return 
    true;
        }

        function 
    insert_onlineusers ()
        {
            if (! 
    $this->already_registred()) {
                
    mysqli_query($this->link
                        
    "INSERT INTO online_users VALUES('$this->session_id',$this->time)");
            }
        }

        function 
    delete_update_onlineusers ()
        {
            
    $timeout $this->time - ($this->timeout 60);
            
    mysqli_query($this->link
                    
    "DELETE FROM online_users WHERE last_activity<=$timeout");
            
    mysqli_query($this->link
                    
    "UPDATE online_users SET last_activity=$this->time WHERE session_id='$this->session_id'");
        }

        
    /**
         * Set timeout in minutes.
         * 
         * @param int $timeout            
         */
        
    function set_timeout ($timeout)
        {
            
    $this->timeout = ((int) $timeout);
        }
    }

    ?>
    نحوه استفاده
    کد php:
    $usersOnline = new SA_USERSONLINE();
    echo 
    'Online users: '$usersOnline->get_online_users(); 
    به همین راحتی قسمت کاربران آنلاین سایت درست شد! :winksmiley02:

    نکات:
    1- اگر اتصال به دیتابیس در فایلهای دیگه برقرار شده و شامل این فایل هم میشه دیگه نیازی به اتصال مجدد نیست پس میتونید لاین های 34 و 35 رو حذف کنید :
    کد php:
    $this->link mysqli_connect($this->DB_HOST$this->DB_USER
                    
    $this->DB_PWD$this->DB_NAME); 

    2- timeout بصورت پیشفرض روی 10 دقیقه تنظیم شده اما قابل تغییر هست:
    کد php:
    $usersOnline->set_timeout(20); 
    * timeout مشخص میکنه که بعد از چند دقیقه کاربر از لیست انلاینها حذف بشه. مثلا اگر timeout رو روی 20 دقیقه تنظیم کنید در صورتی که کاربر برای 20 دقیقه فعالیتی نداشته باشه از لیست حذف میشه.

    3- برای اینکه متوجه بشید چطور کار میکنه میتونید صفحه وب رو با مرورگرهای مختلف باز کنید یا توی سایتتون بذارید و نتیجه رو ببینید.

    امیدوارم بدردتون بخوره.
    موفق باشید.

    پاسخ
    #2
    Note 
    بسیار عالی و کاربردی بود مهندس
    ممنون

    آخرین ویرایش: 06-09-2014 ساعت 17:41، توسط C0der
    پاسخ
    ایجاد موضوع جدید   پاسخ به موضوع  

    موضوعات مرتبط با این موضوع...
    موضوع نویسنده پاسخ بازدید آخرین ارسال
      آموزش آموزش کامپوزر Composer moh3en 0 187 14-05-2017 ساعت 16:12
    آخرین ارسال: moh3en
    Note آموزش MVC به زبان ساده (تصویری) Daniel 1 1,047 16-08-2016 ساعت 09:24
    آخرین ارسال: aaiz
    Note آموزش MVC Daniel 1 840 26-11-2015 ساعت 12:56
    آخرین ارسال: bkk
    Note کتاب آموزش PHP از مقدماتی تا پیشرفته Stack OverFlow 0 1,344 16-02-2015 ساعت 10:48
    آخرین ارسال: Stack OverFlow
    Note آموزش ساخت صفحه بندی در php pHp king 2 1,607 18-05-2014 ساعت 15:34
    آخرین ارسال: pHp king
    Note آموزش مقدماتی php (کتاب) PHP.sec 0 498 16-03-2014 ساعت 21:25
    آخرین ارسال: PHP.sec
    Note آموزش PHP از مقدماتی تا پیشرفته Stack OverFlow 0 446 28-02-2014 ساعت 16:23
    آخرین ارسال: Stack OverFlow
    Note آموزش Regex IranPhp 1 531 09-02-2014 ساعت 18:29
    آخرین ارسال: PHP.sec
    Note آموزش گذاشتن کپچا(Captcha) در سایت SOFTAFZAR 1 1,471 06-02-2014 ساعت 22:46
    آخرین ارسال: Wp script
    Note آموزش ساخت نسخه موبایل برای سایت SOFTAFZAR 0 530 27-01-2014 ساعت 15:24
    آخرین ارسال: SOFTAFZAR

    کاربرانِ درحال بازدید از این موضوع:   1 مهمان