[Php-avanzado] duda ejemplo sesiones
Maximiliano Lizondo
lizondomaximiliano en gmail.com
Mie Ene 29 09:09:56 ART 2014
Hola Leo, estoy probando el ejemplo del manejador de sesiones con mysql. El
código del manual es el siguiente:
<?php
class Session
{
/**
* a database connection resource
* @var resource
*/
private $_sess_db;
/**
* Open the session
* @return bool
*/
public function open() {
if ($this->_sess_db = mysql_connect(SESSION_DB_HOST,
SESSION_DB_USER,
SESSION_DB_PASS)) {
return mysql_select_db(SESSION_DB_DATABASE, $this->_sess_db);
}
return false;
}
/**
* Close the session
* @return bool
*/
public function close() {
return mysql_close($this->_sess_db);
}
/**
* Close the session
* @return bool
*/
public function close() {
return mysql_close($this->_sess_db);
}
/**
* Read the session
* @param int session id
* @return string string of the sessoin
*/
public function read($id) {
$id = mysql_real_escape_string($id);
$sql = sprintf("SELECT `data` FROM `sessions` " .
"WHERE id = '%s'", $id);
if ($result = mysql_query($sql, $this->_sess_db)) {
if (mysql_num_rows($result)) {
$record = mysql_fetch_assoc($result);
return $record['data'];
}
}
return '';
}
/**
* Write the session
* @param int session id
* @param string data of the session
*/
public function write($id, $data) {
$sql = sprintf("REPLACE INTO `sessions` VALUES('%s', '%s', '%s')",
mysql_real_escape_string($id),
mysql_real_escape_string($data),
mysql_real_escape_string(time()));
return mysql_query($sql, $this->_sess_db);
}
/**
* Destoroy the session
* @param int session id
* @return bool
*/
public function destroy($id) {
$sql = sprintf("DELETE FROM `sessions` WHERE `id` = '%s'", $id);
return mysql_query($sql, $this->_sess_db);
}
/**
* Garbage Collector
* @param int life time (sec.)
* @return bool
* @see session.gc_divisor 100
* @see session.gc_maxlifetime 1440
* @see session.gc_probability 1
* @usage execution rate 1/100
* (session.gc_probability/session.gc_divisor)
*/
public function gc($max) {
$sql = sprintf("DELETE FROM `sessions` WHERE `timestamp` < '%s'",
mysql_real_escape_string(time() - $max));
return mysql_query($sql, $this->_sess_db);
}
}
//ini_set('session.gc_probability', 50);
ini_set('session.save_handler', 'user');
$session = new Session();
session_set_save_handler(array($session, 'open'),
array($session, 'close'),
array($session, 'read'),
array($session, 'write'),
array($session, 'destroy'),
array($session, 'gc'));
// below sample main
session_start();
session_regenerate_id(true);
if (isset($_SESSION['counter'])) {
$_SESSION['counter']++;
} else {
$_SESSION['counter'] = 1;
}
?>
*Dudas:*
*1- Suponiendo que yo tengo una base de datos creada, con una tabla de
usuarios con nombres de usuarios y passwords, ¿debo armar otra tabla para
almacenar los datos de las sesiones, cierto? o debo armar otra base de
datos distinta para las sesiones?*
*2- Solo con incluir el script con el manejador de sesiones y escribir
"session_start();" en mi script php alcanza para que php se encargue de las
sesiones de manera transparente al usuario?*
*2- No entiendo cómo puedo aplicar este ejemplo a mi trabajo final, en el
cual ya tengo la base de datos y la tabla de usuarios autorizados para
ingresar al sistema. Me podrías encaminar un poco con eso?*
--
*Ing. Maximiliano Andrés Lizondo*
- *Teléfonos: **0223-493-5488* (particular) - *2236-321708* (móvil)
- *Perfil profesional en LinkedIn: *
http://ar.linkedin.com/pub/maximiliano-andr%C3%A9s-lizondo/61/906/344
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20140129/50642974/attachment-0001.html>
Más información sobre la lista de distribución Php-avanzado