Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/02/2009, 13:55
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Codigo que no entiendo

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

Última edición por Italico76; 05/02/2009 a las 07:55