sesiones en db mssql
Publicado por choty (3 intervenciones) el 03/04/2006 18:58:45
hola alguien me puede ayudar con un script para guardar sesiones en una base mssql, ya que los que he bajado de php.net no funcionan y he tratado de adaptarlos pero sin exito alguno.
aca les dejo el ultimo que estube probando:
function _openSession($savePath, $id){
return TRUE;
}
function _closeSession(){
return TRUE;
}
function _readSession($sessionid){
global $db, $sessionLifetime;
$sessionid = $db->quoteSmart($sessionid);
$time = time();
$sql = "SELECT value FROM sessions WHERE sessionid=$sessionid";
$result = $db->query($sql);
$result->fetchInto($row, DB_FETCHMODE_ASSOC);
if ($row):
return $row[0];
else:
$sql = "INSERT INTO sessions (sessionid, expiry) VALUES ($sessionid, $time)";
$result = $db->query($sql);
return "";
endif;
}
function _writeSession($sessionid, $sessionData){
global $db, $sessionLifetime;
$expiry = time() + $sessionLifetime;
$sessionid = $db->quoteSmart($sessionid);
$sessionData = $db->quoteSmart($sessionData);
//$sql = "UPDATE sessions SET expiry=$expiry, value=$sessionData WHERE sessionid=$sessionid";
$sql = "INSERT INTO sessions (sessionid, expiry, value) VALUES ($sessionid, $expiry, $sessionData)";
$result = $db->query($sql);
//if (!PEAR::isError($result)):
return true;
/* else:
return false;
endif;*/
}
function _destroySession($sessionid){
global $db;
$sessionid = $db->quoteSmart($sessionid);
$sql = "DELETE FROM sessions WHERE sessionid=$sessionid";
$result = $db->query($sql);
if (!PEAR::isError($result)):
if ($db->affectedRows() > 0):
return true;
endif;
endif;
return false;
}
function _gcSession($maxlifetime){
/*global $db;
$time = $db->quoteSmart(time());*/
$sql = "DELETE FROM sessions WHERE expiry < $time";
/* $result = $db->query($sql);
if (PEAR::isError($result)):
return 0;
endif;
return $db->affectedRows();
*/
}
session_set_save_handler("_openSession", "_closeSession", "_readSession", "_writeSession", "_destroySession", "_gcSession");
$sessionLifetime = get_cfg_var("session.gc_maxlifetime");
session_start();
desde ya muchas gracias.
saludos
aca les dejo el ultimo que estube probando:
function _openSession($savePath, $id){
return TRUE;
}
function _closeSession(){
return TRUE;
}
function _readSession($sessionid){
global $db, $sessionLifetime;
$sessionid = $db->quoteSmart($sessionid);
$time = time();
$sql = "SELECT value FROM sessions WHERE sessionid=$sessionid";
$result = $db->query($sql);
$result->fetchInto($row, DB_FETCHMODE_ASSOC);
if ($row):
return $row[0];
else:
$sql = "INSERT INTO sessions (sessionid, expiry) VALUES ($sessionid, $time)";
$result = $db->query($sql);
return "";
endif;
}
function _writeSession($sessionid, $sessionData){
global $db, $sessionLifetime;
$expiry = time() + $sessionLifetime;
$sessionid = $db->quoteSmart($sessionid);
$sessionData = $db->quoteSmart($sessionData);
//$sql = "UPDATE sessions SET expiry=$expiry, value=$sessionData WHERE sessionid=$sessionid";
$sql = "INSERT INTO sessions (sessionid, expiry, value) VALUES ($sessionid, $expiry, $sessionData)";
$result = $db->query($sql);
//if (!PEAR::isError($result)):
return true;
/* else:
return false;
endif;*/
}
function _destroySession($sessionid){
global $db;
$sessionid = $db->quoteSmart($sessionid);
$sql = "DELETE FROM sessions WHERE sessionid=$sessionid";
$result = $db->query($sql);
if (!PEAR::isError($result)):
if ($db->affectedRows() > 0):
return true;
endif;
endif;
return false;
}
function _gcSession($maxlifetime){
/*global $db;
$time = $db->quoteSmart(time());*/
$sql = "DELETE FROM sessions WHERE expiry < $time";
/* $result = $db->query($sql);
if (PEAR::isError($result)):
return 0;
endif;
return $db->affectedRows();
*/
}
session_set_save_handler("_openSession", "_closeSession", "_readSession", "_writeSession", "_destroySession", "_gcSession");
$sessionLifetime = get_cfg_var("session.gc_maxlifetime");
session_start();
desde ya muchas gracias.
saludos
Valora esta pregunta


0