Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/02/2004, 20:02
Avatar de Manoloweb
Manoloweb
 
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Wow, pues la verdad que es un poco mas complejo que simplemente ponerte una lineas, pero aqui va un poco...

1.- Debes modificar la forma en la que tu pagina administra las sesiones, una forma púede ser a traves del .htaccess

.htaccess
=========================
php_value session.save_handler 'user'
php_value session.save_path 'php_sessions'
php_value auto_prepend_file 'home/path/mysql_session_handler.php'
=========================

Una vez hecho eso, debes crear unas funciones para administrar tu sesion, aqui te pongo una que uso yo:

mysql_session_handler.php
Código PHP:
<?php
assert
(ini_get('session.save_handler') == 'user');
if (
$mysql_session_table ini_get('session.save_path')) {
    
$mysql_session_table 'php_sessions';
}
$mysql_session_handle null;
function 
mysql_session_open($save_path$session_name)
{
    global 
$mysql_session_handle;
    include_once (
"../constantes_co_es.php");
    
// Aqui sustituyes los datos de tu conexion a la BD
    
$host=BD_HOST;
    
$user=BD_USUARIO;
    
$pass=BD_PASSWORD;
    
$dbas=BD_BASE;
    
$mysql_session_handle mysql_connect($host,$user,$pass);
    
mysql_select_db($dbas,$mysql_session_handle);
    return 
$mysql_session_handle;
}
function 
mysql_session_close()
{
    global 
$mysql_session_handle;

    if (isset(
$mysql_session_handle)) {
        return 
mysql_close($mysql_session_handle);
    }

    return 
true;
}
function 
mysql_session_read($key)
{
    global 
$mysql_session_handle$mysql_session_table;

    
$key mysql_escape_string($key);
    
$now time();
    
$query "select data from $mysql_session_table " .
             
"where session_id = '$key';";
    
$result mysql_query($query,$mysql_session_handle);
    if ((
$result === false) || (mysql_num_rows($result) != 1)) {
        
$query "insert into $mysql_session_table " .
                 
"(session_id, last_active, data) " .
                 
"values('$key', $now, '');";

        
$result mysql_query($query$mysql_session_handle);
        if ((
$result !== false) && (@mysql_affected_rows($result) == 1)) {
            @
mysql_free_result($result);
            return 
'';
        }
        
$query "select data from $mysql_session_table " .
                 
"where session_id = '$key';";
        
$result mysql_query($query,$mysql_session_handle);
        if ((
$result === false) || (@mysql_num_rows($result) != 1)) {
            @
mysql_free_result($result);
            return 
'';
        }
    }
    
$data mysql_result($result0'data');
    @
mysql_free_result($result);
    return 
$data;
}
function 
mysql_session_write($key$val)
{
    global 
$mysql_session_handle$mysql_session_table;

    
$key mysql_escape_string($key);
    
$val mysql_escape_string($val);
    
$now time();
    
$query "update $mysql_session_table set last_active=$now, data='$val' " .
             
"where session_id='$key';";

    
$result mysql_query($query,$mysql_session_handle);

    
$success = ($result !== false);
    @
mysql_free_result($result);
    return 
$success;
}
function 
mysql_session_destroy($key)
{
    global 
$mysql_session_handle$mysql_session_table;

    
$key mysql_escape_string($key);
    
$query "delete from $mysql_session_table where session_id = '$key';";
    
$result mysql_query($query,$mysql_session_handle);
    
$success = (($result !== false) && (@mysql_affected_rows($result) == 1));
    @
mysql_free_result($result);

    return 
$success;
}
function 
mysql_session_gc($maxlifetime)
{
    global 
$mysql_session_handle$mysql_session_table;

    
$expiry time() - $maxlifetime;
    
$query "delete from $mysql_session_table where last_active < $expiry;";

    return (
mysql_query($query,$mysql_session_handle) !== false);
}

/* Aqui le indicas a PHP que funciones administran que partes de la sesion. */
session_set_save_handler(
    
'mysql_session_open',
    
'mysql_session_close',
    
'mysql_session_read',
    
'mysql_session_write',
    
'mysql_session_destroy',
    
'mysql_session_gc'
);

?>
Por ultimo vas a necesitar una tabla para manejar las sesiones en tu base de datos:

Código:
CREATE TABLE `php_sessions` (
  `session_id` varchar(40) NOT NULL default '',
  `last_active` int(11) NOT NULL default '0',
  `data` text NOT NULL,
  PRIMARY KEY  (`session_id`)
) TYPE=MyISAM;

Si todo esto te parece demasiado, mejor te recomiendo buscar algun script listo para usar (que desconozco) u olvidarte del tema hasta que mejores tu percepción del PHP.

__________________
Manoloweb