• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چگونگی‌ استفاد از تابع session_set_save_handler
#1
با سلام

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

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

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

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

حالت ردیاب کاربر داره....
با تشکر ممل آمریکایی
  پاسخ
تشکر شده توسط :
#2
باید توابع رو تعریف کنی
من این مثال رو برداشتم و با کمی تغییرات بهت میدم
کد پی‌اچ‌پی:
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
#3
ممنون

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

این
کد پی‌اچ‌پی:
$data mysql_real_escape_string($data); 

از کجا میاد؟ از کجا ای دیتا رو میگیره و وارد دیتابیس میکنه !!!!؟
با تشکر ممل آمریکایی
  پاسخ
تشکر شده توسط :
#4
این ‌اطلاعات‌ رو خود‌‌ php به این توابع میده. شما همیشه برای این توابع این ورودی ها رو دارید
در ضمن ID و‌ access و‌ data فیلد‌‌ هستن نه جدول.
  پاسخ
تشکر شده توسط : ahora
#5
مشکل من حل شد

کد نهایی این شد...
کد پی‌اچ‌پی:
<?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
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"


با تشکر زیاد هم از آقای سهرابلو
با تشکر ممل آمریکایی
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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