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;
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;
}
}
}
?>