<?php
$session = new session;
class session
{
public $lifeTime = 86400;
public $started = FALSE;
public function __construct ()
{
ini_set( 'session.cookie_lifetime' ,157680000);
ini_set( 'session.cookie_domain' ,COOKDOMAIN);
ini_set( 'session.name' ,COOKPREFIX. 'sid' );
ini_set( 'session.use_trans_sid' ,0);
ini_set( 'session.use_cookies' ,1);
}
public function getId()
{
$sn = ini_get( 'session.name' );
if (isset($_REQUEST[$sn])) { return gpcvar_str($_REQUEST[$sn]);}
if (isset($_COOKIE[$sn])) { return gpcvar_str($_COOKIE[$sn]);}
$ this ->start();
return session_id();
}
public function start()
{
if ($ this ->started) { return ;}
$ this ->started = TRUE;
$sn = ini_get( 'session.name' );
session_set_save_handler(array($ this , 'open' ),array($ this , 'close' ),array($ this , 'read' ),array($ this , 'write' ),array($ this , 'destroy' ),array($ this , 'gc' ));
if (isset($_REQUEST[$sn])) {$_COOKIE[$sn] = gpcvar_str($_REQUEST[$sn]);}
session_start();
}
public function session_write_close() { return TRUE;}
public function open($savePath,$sessName) { return TRUE;}
public function close() { return TRUE;}
public function read($sessID) { return xE::$memcache-> get ( 'sess.' .$sessID);}
public function write($sessID,$sessData) { return xE::$memcache-> set ( 'sess.' .$sessID,$sessData,$ this ->lifeTime);}
public function destroy($sessID) { return xE::$memcache->delete( 'sess.' .$sessID);}
public function gc($lt) { return TRUE;}
}
function gpcvar_str(&$ var ) { if (is_array($ var )) { return '' ;} return strval($ var );}
* This source code was highlighted with Source Code Highlighter .
CREATE TABLE `xE_authsessions` (
`session_id` char (32) CHARACTER SET ascii COLLATE ascii_bin NOT NULL ,
`uid` int (11) NOT NULL ,
`ip` int (10) unsigned NOT NULL ,
`ctime` int (11) NOT NULL ,
PRIMARY KEY (`session_id`),
KEY `uid` (`uid`)
) ENGINE=InnoDB;
* This source code was highlighted with Source Code Highlighter .
Source: https://habr.com/ru/post/62550/
All Articles