Още малко ще се откажа и със SQL заявка ще си правя сесииите.
Първо си направих сам файлова сесия, но ми изпизваше, че файла не може да се изтрие
По едно време работеше сега се развали ?
Първо си направих сам файлова сесия, но ми изпизваше, че файла не може да се изтрие
Код:
class session
{
var $sid;
var $ttl;
var $autologin;
function session()
{
global $_SESSION, $_COOKIE, $_POST, $_GET, $db;
$this->sid = request_var('sid', false, true);
$this->autologin = request_var('remember', false, true);
session_name('sid');
//session_save_path(realpath(ROOT_PATH . 'sessions/'));
session_cache_limiter((($this->autologin) ? 'private_no_expire' : 'private'));
if (preg_match('/^[a-zA-Z0-9\-]++$/', $this->sid))
{
session_id($this->sid);
}
session_start();
if (!isset($_SESSION['user_id']))
{
$this->create(GUEST);
}
else if ($_SESSION['user_id'] != GUEST)
{
$result = $db->query('UPDATE ' . USERS_TABLE . ' SET user_last_visit = ' . time() . ', user_ip = ' . get_formatted_ip() . ' WHERE user_id = ' . $_SESSION['user_id'] . ' LIMIT 1');
$_SESSION['user_last_visit'] = time();
$this->ttl = session_cache_expire();
}
else
{
$this->ttl = session_cache_expire();
}
}
function gen_session_id()
{
session_regenerate_id(true);
}
function save()
{
global $_SESSION;
if ($this->sid)
{
session_write_close();
}
}
function create($user_id, $auto_login = false)
{
global $_SESSION, $db, $cache;
$this->autologin = $autologin;
$result = $db->query('SELECT * FROM ' . USERS_TABLE . ' WHERE user_id = ' . $user_id . ' LIMIT 1');
$row = $db->fetchrow($result);
$db->freeresult($result);
if (!$row)
{
if ($user_id != GUEST)
{
$result = $db->query('SELECT * FROM ' . USERS_TABLE . ' WHERE user_id = ' . GUEST . ' LIMIT 1');
$row = $db->fetchrow($result);
$db->freeresult($result);
if (!$row)
{
trigger_error('Warning select guest user');
}
}
}
if ($_SESSION['user_id'] && $_SESSION['user_id'] != GUEST)
{
$result = $db->query('UPDATE ' . USERS_TABLE . ' SET user_last_visit = ' . time() . ', user_ip = ' . get_formatted_ip($_SERVER['REMOTE_ADDR']) . ' WHERE user_id = ' . $_SESSION['user_id'] . ' LIMIT 1');
$_SESSION['user_last_visit'] = time();
}
$this->ttl = ($this->auto_login) ? 4730400000 : 648000;
set_cookie('remember', intval($this->autologin), time()+$this->ttl);
$this->sid = session_id();
set_cookie('sid', $this->sid, time()+$this->ttl);
$_SESSION = $row;
return true;
}
function destroy()
{
set_cookie('sid', '', -1);
set_cookie('remember', '', -1);
session_destroy();
}
}