Hola, ... SI tienes que crear una tabla y es con el nombre que quieras pero por defecto se llama "sesiones" ...... y es un objeto asi que deberias hacer algo asi:
Código PHP:
<?
Include "manejoSesiones.class.php";
// estimo que el LINK con el que creas la coneccion a MySQL es $con
$mi_sesion = new manejoSesiones();
$mi_sesion->tiempoExpirado=1800; // 1800 segundos = 1 hora
$mi_sesion->abrirSesion (??????); // aca ya no entiendo........
?>
Lo que no comprendo es donde define $savePath, $sessionID como atributos de la clase....
SUGIERO pasen este post a PHP ORIENTADO A OBJETOS
Por que no miras en ese mismo
foro donde dicen como se implementa ?
Clase:
Código PHP:
<?php
class manejoSesiones {
var $tiempoExpirado;
var $tablaSesiones = "sesiones";
function abrirSesion($savePath, $sessionID) {
global $con;
return true;
}
function cerrarSesion() {
global $con;
$this->tiempoExpirado = ini_get('session.gc_maxlifetime');
$this->recolector($this->tiempoExpirado);
return true;
}
function leerSesion($sessionID) {
global $con;
$sql = "SELECT * FROM ".$this->tablaSesiones." WHERE sessionID = '$sessionID'";
$result = mysql_query($sql);
if(!$result) { return false; }
$num = mysql_num_rows($result);
if($num > 0) {
$data = mysql_fetch_assoc($result);
return $data['sessionData'];
}else{
return false;
}
}
function escribirSesion($sessionID, $sessionData) {
global $con;
$sql = "UPDATE ".$this->tablaSesiones." SET sessionData = '$sessionData' WHERE sessionID = '$sessionID'";
$result = mysql_query($sql);
if(mysql_affected_rows()) {
return true;
}else{
$sql = "INSERT INTO ".$this->tablaSesiones." (sessionID, sessionStart, sessionData) VALUES ('$sessionID','".time()."','$sessionData')";
$result = mysql_query($sql);
return (!$result) ? false : true ;
}
}
function borrarSesion($sessionID) {
global $con;
$sql = "DELETE FROM ".$this->tablaSesiones." WHERE sessionID = '$sessionID'";
$res = mysql_query($sql);
return (!$res) ? false : true ;
}
function recolector($tiempo) {
global $con;
$sql = "DELETE FROM ".$this->tablaSesiones." WHERE ".time()." > (sessionStart + ".$tiempo.")";
$res = mysql_query($sql);
return (!$res) ? false : true ;
}
}
?>
Implementacion:
Código PHP:
<?php
//ini_set()
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
//Conexion a la BD
$con = @mysql_connect($dbHost, $dbUser, $dbPass);
@mysql_select_db($dbName, $con);
include("includes/manejoSesiones.class.php");
//Manejo de sesiones (ojala y sirva o.oU)
$sesionOA = new manejoSesiones();
session_set_save_handler(array(&$sesionOA,'abrirSesion'),array(&$sesionOA,'cerrarSesion'),array(&$sesionOA,'leerSesion'),array(&$sesionOA,'escribirSesion'),array(&$sesionOA,'borrarSesion'),array(&$sesionOA,'recolector'));
session_start();
?>
Pienso que hay algo "mal" conceptualmente con esa clase.....porque para definir el tiempo de vida de sesion (por ejemplo) no lo hace con un metodo de la clase..... ademas.....el atributo tiempo no tiene un setter