
Originally Posted by
costas
But how can I store sessions in db?
PHP Code:
<?php
$GLOBALS['sess_server'] = 'localhost';
$GLOBALS['sess_db'] = 'sessions';
$GLOBALS['sess_username'] = 'user';
$GLOBALS['sess_password'] = 'pass';
function sess_open() {
$GLOBALS['sess_mysqli'] = mysqli_connect(
$GLOBALS['sess_server'],
$GLOBALS['sess_username'],
$GLOBALS['sess_password']
);
mysqli_select_db($GLOBALS['sess_mysqli'], $GLOBALS['sess_db']);
}
function sess_close() {
mysqli_close($GLOBALS['sess_mysqli']);
}
function sess_read($id) {
$result = mysqli_query(
$GLOBALS['sess_mysqli'],
sprintf('SELECT data FROM sessiondata WHERE id = \'%s\'',
mysqli_real_escape_string($GLOBALS['sess_mysqli'], $id))
);
if ($row = mysqli_fetch_object($result)) {
$ret = $row->data;
mysqli_query(
$GLOBALS['sess_mysqli'],
sprintf('UPDATE sessiondata SET access=\'%s\' WHERE id=\'%s\'',
date('YmdHis'),
mysqli_real_escape_string($GLOBALS['sess_mysqli'], $id))
);
} else {
$ret = '';
}
return $ret;
}
function sess_write($id, $data) {
mysqli_query(
$GLOBALS['sess_mysqli'],
sprintf('UPDATE sessiondata SET data=\'%s\', access=\'%s\' WHERE id=\'%s\'',
mysqli_real_escape_string($GLOBALS['sess_mysqli'], $data),
date('YmdHis'),
mysqli_real_escape_string($GLOBALS['sess_mysqli'], $id))
);
if (mysqli_affected_rows($GLOBALS['sess_mysqli']) < 1) {
mysqli_query(
$GLOBALS['sess_mysqli'],
sprintf('INSERT INTO sessiondata (data, access, id) VALUES (\'%s\', \'%s\', \'%s\')',
mysqli_real_escape_string($GLOBALS['sess_mysqli'], $data),
date('YmdHis'),
mysqli_real_escape_string($GLOBALS['sess_mysqli'], $id))
);
}
return true;
}
function sess_destroy($id) {
mysqli_query(
$GLOBALS['sess_mysqli'],
sprintf('DELETE FROM sessiondata WHERE id=\'%s\'',
mysqli_real_escape_string($GLOBALS['sess_mysqli'], $id))
);
return true;
}
function sess_gc($timeout) {
$timestamp = date('YmdHis', time() - $timeout);
mysqli_query(
$GLOBALS['sess_mysqli'],
sprintf('DELETE FROM sessiondata WHERE access < \'%s\'',
$timestamp)
);
}
session_set_save_handler(
'sess_open', 'sess_close', 'sess_read',
'sess_write', 'sess_destroy', 'sess_gc');
?>
Bookmarks