Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2010, 17:46
paulkees
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 22 años
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(32) NOT NULL default '',
   
ses_time int(11) NOT NULL default '0',
   
ses_start int(11) NOT 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; 
        } 
    } 
} 
?>