/
  • چگونگی‌ استفاد از تابع session_set_save_handler

  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی چگونگی‌ استفاد از تابع session_set_save_handler
    نویسنده پیام
    ahora آفلاین
    کسی که از شکست نا امید نمیشه
    ****

    ارسال‌ها: 384
    تاریخ عضویت: ۱۳۸۷ دي ۹
    اعتبار: 4
    تشکرها : 130
    ( 54 تشکر در 41 ارسال )
    ارسال: #1
    چگونگی‌ استفاد از تابع session_set_save_handler
    با سلام

    این تابع
    کد PHP:
    session_set_save_handler('_open',
                             
    '_close',
                             
    '_read',
                             
    '_write',
                             
    '_destroy',
                             
    '_clean'); 
    چطور میشه ازش استفاده کرد؟

    برنامه های برای هر کدومشون باز بسته و نوشتن واسشون توابع لازم نوشته شده

    فقط اینکه من نمیدونم از اون توابع طور استفاده کنم
    که تو هر صفحه سای که کاربر میشه بشه تشخیص داد که تو چه صفحه ای هست ...

    و زیاد هم به دیتابیس فشار نیاد

    حالت ردیاب کاربر داره....
    __________________________________________________________________________
    با تشکر ممل آمریکایی
    (آخرین ویرایش در این ارسال: ۱۳۸۸ بهمن ۷ ۰۳:۱۶ عصر، توسط admin.)
    ۱۳۸۸ بهمن ۷ ۰۲:۱۳ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #2
    RE: چگونگی‌ استفاد از تابع session_set_save_handler
    باید توابع رو تعریف کنی
    من این مثال رو برداشتم و با کمی تغییرات بهت میدم
    کد PHP:
    function _open()
    {
        global 
    $_sess_db;
     
        if (
    $_sess_db mysql_connect('127.0.0.1''root''salam')) {
            
    $res=mysql_select_db('sessions'$_sess_db) or die(mysql_error($_sess_db));
            return 
    $res;
        }
        else{
            die(
    "Can not connect ro database");
        }
     
        return 
    FALSE;
    }
     
    function 
    _close()
    {
        global 
    $_sess_db;
     
        return 
    mysql_close($_sess_db);
    }
     
    function 
    _read($id)
    {
        global 
    $_sess_db;
     
        
    $id mysql_real_escape_string($id);
     
        
    $sql "SELECT data
                FROM   sessions
                WHERE  id = '
    $id'";
         
    $result=mysql_query($sql$_sess_db) or die(mysql_error($_sess_db));
        if (
    $result) {
            if (
    mysql_num_rows($result)) {
                
    $record mysql_fetch_assoc($result);
     
                return 
    $record['data'];
            }
        }
     
        return 
    '';
    }

    function 
    _write($id$data)
    {
        global 
    $_sess_db;
     
        
    $access time();
     
        
    $id mysql_real_escape_string($id);
        
    $access mysql_real_escape_string($access);
        
    $data mysql_real_escape_string($data);
     
        
    $sql "REPLACE
                INTO    sessions
                VALUES  ('
    $id', '$access', '$data')";
         
    $result=mysql_query($sql$_sess_db) or die(mysql_error($_sess_db));
        return 
    $result;
    }

    function 
    _destroy($id)
    {
        global 
    $_sess_db;
     
        
    $id mysql_real_escape_string($id);
     
        
    $sql "DELETE
                FROM   sessions
                WHERE  id = '
    $id'";
     
        return 
    mysql_query($sql$_sess_db);
    }

    function 
    _clean($max)
    {
        global 
    $_sess_db;
     
        
    $old time() - $max;
        
    $old mysql_real_escape_string($old);
     
        
    $sql "DELETE
                FROM   sessions
                WHERE  access < '
    $old'";
     
        return 
    mysql_query($sql$_sess_db);

    اینم‌ جدولت
    کد:
    CREATE TABLE sessions (
        id varchar(32) NOT NULL,
        access int(10) unsigned,
        data text,
        PRIMARY KEY (id)
    );
    ۱۳۸۸ بهمن ۷ ۰۳:۲۶ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : scooter molana
    ahora آفلاین
    کسی که از شکست نا امید نمیشه
    ****

    ارسال‌ها: 384
    تاریخ عضویت: ۱۳۸۷ دي ۹
    اعتبار: 4
    تشکرها : 130
    ( 54 تشکر در 41 ارسال )
    ارسال: #3
    RE: چگونگی‌ استفاد از تابع session_set_save_handler
    ممنون

    کد PHP:
    $id mysql_real_escape_string($id); 
    ‫این جدول ID که SESSION هست جدول access هم معلومه جدول data‬
    ‫مال چیه؟

    این
    کد PHP:
    $data mysql_real_escape_string($data); 

    از کجا میاد؟ از کجا ای دیتا رو میگیره و وارد دیتابیس میکنه !!!!؟
    __________________________________________________________________________
    با تشکر ممل آمریکایی
    (آخرین ویرایش در این ارسال: ۱۳۸۸ بهمن ۷ ۰۴:۰۱ عصر، توسط ahora.)
    ۱۳۸۸ بهمن ۷ ۰۳:۵۵ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #4
    RE: چگونگی‌ استفاد از تابع session_set_save_handler
    این ‌اطلاعات‌ رو خود‌‌ php به این توابع میده. شما همیشه برای این توابع این ورودی ها رو دارید
    در ضمن ID و‌ access و‌ data فیلد‌‌ هستن نه جدول.
    ۱۳۸۸ بهمن ۷ ۰۴:۲۰ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : ahora
    ahora آفلاین
    کسی که از شکست نا امید نمیشه
    ****

    ارسال‌ها: 384
    تاریخ عضویت: ۱۳۸۷ دي ۹
    اعتبار: 4
    تشکرها : 130
    ( 54 تشکر در 41 ارسال )
    ارسال: #5
    RE: چگونگی‌ استفاد از تابع session_set_save_handler
    مشکل من حل شد

    کد نهایی این شد...
    کد PHP:
    <?php
    function _open()
    {
        global 
    $_sess_db;
     
        if (
    $_sess_db mysql_connect('127.0.0.1''root''salam')) {
            
    $res=mysql_select_db('sestest'$_sess_db) or die(mysql_error($_sess_db));
            return 
    $res;
        }
        else{
            die(
    "Can not connect ro database");
        }
     
        return 
    FALSE;
    }
     
    function 
    _close()
    {
        global 
    $_sess_db;
     
        return 
    mysql_close($_sess_db);
    }
     
    function 
    _read($id)
    {
        global 
    $_sess_db;
     
        
    $id mysql_real_escape_string($id);
     
        
    $sql "SELECT data
                FROM   sessions
                WHERE  id = '
    $id'";
         
    $result=mysql_query($sql$_sess_db) or die(mysql_error($_sess_db));
        if (
    $result) {
            if (
    mysql_num_rows($result)) {
                
    $record mysql_fetch_assoc($result);
     
                return 
    $record['data'];
            }
        }
     
        return 
    '';
    }

    function 
    _write($id$data)
    {
        global 
    $_sess_db;
     
        
    $access time();
     
        
    $id mysql_real_escape_string($id);
        
    $access mysql_real_escape_string($access);
        
    $data mysql_real_escape_string($data);
     
        
    $sql "REPLACE
                INTO    sessions
                VALUES  ('
    $id', '$access', '$data')";
         
    $result=mysql_query($sql$_sess_db) or die(mysql_error($_sess_db));
        return 
    $result;
    }

    function 
    _destroy($id)
    {
        global 
    $_sess_db;
     
        
    $id mysql_real_escape_string($id);
     
        
    $sql "DELETE
                FROM   sessions
                WHERE  id = '
    $id'";
     
        return 
    mysql_query($sql$_sess_db);
    }

    function 
    _clean($max)
    {
        global 
    $_sess_db;
     
        
    $old time() - $max;
        
    $old mysql_real_escape_string($old);
     
        
    $sql "DELETE
                FROM   sessions
                WHERE  access < '
    $old'";
     
        return 
    mysql_query($sql$_sess_db);
    }
    session_set_save_handler('_open',
                             
    '_close',
                             
    '_read',
                             
    '_write',
                             
    '_destroy',
                             
    '_clean');
    session_start();
    $_SESSION["sdfsf"]="asdadasd"


    با تشکر زیاد هم از آقای سهرابلو
    مشکل من حل شد

    کد نهایی این شد...
    کد PHP:
    <?php
    function _open()
    {
        global 
    $_sess_db;
     
        if (
    $_sess_db mysql_connect('127.0.0.1''root''salam')) {
            
    $res=mysql_select_db('sestest'$_sess_db) or die(mysql_error($_sess_db));
            return 
    $res;
        }
        else{
            die(
    "Can not connect ro database");
        }
     
        return 
    FALSE;
    }
     
    function 
    _close()
    {
        global 
    $_sess_db;
     
        return 
    mysql_close($_sess_db);
    }
     
    function 
    _read($id)
    {
        global 
    $_sess_db;
     
        
    $id mysql_real_escape_string($id);
     
        
    $sql "SELECT data
                FROM   sessions
                WHERE  id = '
    $id'";
         
    $result=mysql_query($sql$_sess_db) or die(mysql_error($_sess_db));
        if (
    $result) {
            if (
    mysql_num_rows($result)) {
                
    $record mysql_fetch_assoc($result);
     
                return 
    $record['data'];
            }
        }
     
        return 
    '';
    }

    function 
    _write($id$data)
    {
        global 
    $_sess_db;
     
        
    $access time();
     
        
    $id mysql_real_escape_string($id);
        
    $access mysql_real_escape_string($access);
        
    $data mysql_real_escape_string($data);
     
        
    $sql "REPLACE
                INTO    sessions
                VALUES  ('
    $id', '$access', '$data')";
         
    $result=mysql_query($sql$_sess_db) or die(mysql_error($_sess_db));
        return 
    $result;
    }

    function 
    _destroy($id)
    {
        global 
    $_sess_db;
     
        
    $id mysql_real_escape_string($id);
     
        
    $sql "DELETE
                FROM   sessions
                WHERE  id = '
    $id'";
     
        return 
    mysql_query($sql$_sess_db);
    }

    function 
    _clean($max)
    {
        global 
    $_sess_db;
     
        
    $old time() - $max;
        
    $old mysql_real_escape_string($old);
     
        
    $sql "DELETE
                FROM   sessions
                WHERE  access < '
    $old'";
     
        return 
    mysql_query($sql$_sess_db);
    }
    session_set_save_handler('_open',
                             
    '_close',
                             
    '_read',
                             
    '_write',
                             
    '_destroy',
                             
    '_clean');
    session_start();
    $_SESSION["sdfsf"]="asdadasd"


    با تشکر زیاد هم از آقای سهرابلو
    __________________________________________________________________________
    با تشکر ممل آمریکایی
    (آخرین ویرایش در این ارسال: ۱۳۸۸ بهمن ۷ ۰۵:۰۲ عصر، توسط ahora.)
    ۱۳۸۸ بهمن ۷ ۰۵:۰۲ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS