Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2010, 17:46
paulkees
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Registrar datos de Sesión en BD

Hola a todos...

Tengo esta tabla para guardar los datos de sesión y pretendo hacerlo con esta clase php que tengo.

El problema es que no escribe nada en la Tabla de la BD. Lamentablemente el tutorial de la clase ya no está más en esa dirección y no hay forma de encontrarlo.

No veo donde está la falla. Los datos de conexión son correctos y no da errores!

Por favor, si alguien me puede dar una mano o tal vez alguien que usa ésta misma clase me puede orientar!!!

Tabla "sessions"
Código PHP:
CREATE TABLE sessions (
   
ses_id varchar(32NOT NULL default '',
   
ses_time int(11NOT NULL default '0',
   
ses_start int(11NOT NULL default '0',
   
ses_value text NOT NULL,
   
PRIMARY KEY  (ses_id)
TYPE=MyISAM
La Clase "session_handler.php"
Código PHP:
<?php
/* This class code is based on the tutorial of Matt Wade 
from http://www.zend.com/zend/spotlight/code-gallery-wade8.php */

/* Create new object of class */ 
$ses_class = new session(); 

/* Change the save_handler to use the class functions */ 
session_set_save_handler (array(&$ses_class'_open'), 
                          array(&
$ses_class'_close'), 
                          array(&
$ses_class'_read'), 
                          array(&
$ses_class'_write'), 
                          array(&
$ses_class'_destroy'), 
                          array(&
$ses_class'_gc')); 

/* Start the session */ 
session_start(); 

class 
session {
    
/* Define the mysql table you wish to use with 
       this class, this table MUST exist. */ 
    
var $ses_table SESSION_TABLE

    
/* Change to 'Y' if you want to connect to a db in 
       the _open function */ 
    
var $db_con "Y"

    
/* Configure the info to connect to MySQL, only required 
       if $db_con is set to 'Y' */ 
    
var $db_host DB_SERVER
    var 
$db_user DB_USER
    var 
$db_pass DB_PASSWORD
    var 
$db_dbase DB_NAME

    
/* Create a connection to a database */ 
    
function db_connect() { 
        
$mysql_connect = @mysql_pconnect ($this->db_host
                                          
$this->db_user
                                          
$this->db_pass); 
        
$mysql_db = @mysql_select_db ($this->db_dbase); 

        if (!
$mysql_connect || !$mysql_db) { 
            return 
FALSE
        } else { 
            return 
TRUE
        } 
    } 

    
/* Open session, if you have your own db connection 
       code, put it in here! */ 
    
function _open($path$name) { 
        if (
$this->db_con == "Y") { 
            
$this->db_connect(); 
        } 

        return 
TRUE
    } 

    
/* Close session */ 
    
function _close() { 
        
/* This is used for a manual call of the 
           session gc function */ 
        
$this->_gc(0); 
        return 
TRUE
    } 

    
/* Read session data from database */ 
    
function _read($ses_id) { 
        
$session_sql "SELECT * FROM " $this->ses_table 
                     
" WHERE ses_id = '$ses_id'"
        
$session_res = @mysql_query($session_sql); 
        if (!
$session_res) { 
            return 
''
        } 

        
$session_num = @mysql_num_rows ($session_res); 
        if (
$session_num 0) { 
            
$session_row mysql_fetch_assoc ($session_res); 
            
$ses_data $session_row["ses_value"]; 
            return 
$ses_data
        } else { 
            return 
''
        } 
    } 

    
/* Write new data to database */ 
    
function _write($ses_id$data) { 
        
$session_sql "UPDATE " $this->ses_table 
                     
" SET ses_time='" time() 
                     . 
"', ses_value='$data' WHERE ses_id='$ses_id'"
        
$session_res = @mysql_query ($session_sql); 
        if (!
$session_res) { 
            return 
FALSE
        } 
        if (
mysql_affected_rows ()) { 
            return 
TRUE
        } 

        
$session_sql "INSERT INTO " $this->ses_table 
                     
" (ses_id, ses_time, ses_start, ses_value)" 
                     
" VALUES ('$ses_id', '" time() 
                     . 
"', '" time() . "', '$data')"
        
$session_res = @mysql_query ($session_sql); 
        if (!
$session_res) {     
            return 
FALSE
        }         else { 
            return 
TRUE
        } 
    } 

    
/* Destroy session record in database */ 
    
function _destroy($ses_id) { 
        
$session_sql "DELETE FROM " $this->ses_table 
                     
" WHERE ses_id = '$ses_id'"
        
$session_res = @mysql_query ($session_sql); 
        if (!
$session_res) { 
            return 
FALSE
        }         else { 
            return 
TRUE
        } 
    } 

    
/* Garbage collection, deletes old sessions */ 
    
function _gc($life) { 
        
$ses_life strtotime("-5 minutes"); 

        
$session_sql "DELETE FROM " $this->ses_table 
                     
" WHERE ses_time < $ses_life"
        
$session_res = @mysql_query ($session_sql); 


        if (!
$session_res) { 
            return 
FALSE
        }         else { 
            return 
TRUE
        } 
    } 

?>