Initial import
This commit is contained in:
71
lib/Session.php
Executable file
71
lib/Session.php
Executable file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
class Session {
|
||||
|
||||
public static $cache = null;
|
||||
public static $id = null;
|
||||
|
||||
public static function getID() {
|
||||
|
||||
|
||||
if (array_key_exists("SESSION_ID", $_COOKIE)) {
|
||||
Session::$id = $_COOKIE["SESSION_ID"];
|
||||
}
|
||||
|
||||
if (Session::$id) return Session::$id;
|
||||
|
||||
Session::$id = uniqid("decpdf", true);
|
||||
|
||||
setcookie("SESSION_ID", Session::$id, time() + 60*60*24*30);
|
||||
return Session::$id;
|
||||
}
|
||||
|
||||
public static function init($host, $port, $weight = 50) {
|
||||
if (Session::$cache == null) {
|
||||
Session::$cache = new Memcached();
|
||||
}
|
||||
Session::$cache->addServer($host, $port, $weight);
|
||||
}
|
||||
|
||||
public static function get(string $key) : mixed {
|
||||
$sid = Session::getID();
|
||||
|
||||
$key = "Session::" . $sid . "::" . $key;
|
||||
|
||||
$t = Session::$cache->get($key);
|
||||
if ($t) {
|
||||
return unserialize($t);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static function set(string $key, mixed $value) : void {
|
||||
$sid = Session::getID();
|
||||
$fkey = "Session::" . $sid . "::" . $key;
|
||||
Session::$cache->set($fkey, serialize($value));//, 60*60*24*30);
|
||||
}
|
||||
|
||||
public static function unset(string $key) : void {
|
||||
$sid = Session::getID();
|
||||
$fkey = "Session::" . $sid . "::" . $key;
|
||||
Session::$cache->delete($fkey);
|
||||
}
|
||||
|
||||
public static function all_data() {
|
||||
$sid = Session::getID();
|
||||
$fkey = "Session::" . $sid . "::";
|
||||
$keys = Session::$cache->getAllKeys();
|
||||
$data = [];
|
||||
foreach ($keys as $k) {
|
||||
if (str_starts_with($k, $fkey)) {
|
||||
$d = Session::get($k);
|
||||
if (!$d) {
|
||||
$d = [];
|
||||
}
|
||||
$out[$k] = $data;
|
||||
}
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user