<?php
class SessionManager {
private static $cookie_name = "hrphpsession";
private static $file = "data/session.json";
private static $expire = array("default" => 86400, "remember" => 2592000);
public static $valid;
public static function Init() {
self::$valid = self::Check();
}
public static function Set($remember) {
$data = array(
"hash" => md5(rand().uniqid()),
"IP" => $_SERVER['REMOTE_ADDR'],
"timestamp" => time(),
"remember" => ($remember ? 1 : 0)
);
$fw = fopen(self::$file,"w");
fwrite($fw,json_encode($data));
fclose($fw);
setcookie(self::$cookie_name,$data["hash"],time()+($remember ? self::$expire["remember"] : self::$expire["default"]));
}
public static function Destroy() {
setcookie(self::$cookie_name,time()-self::$expire["remember"]);
unlink(self::$file);
}
public static function Check() {
if(file_exists(self::$file) && isset($_COOKIE[self::$cookie_name])) {
try {
$data = json_decode(file_get_contents(self::$file), true);
return
(($data["remember"]==1 && time() < $data["timestamp"]+self::$expire["remember"]) ||
($data["remember"]==0 && time() < $data["timestamp"]+self::$expire["default"]) &&
$data["IP"] == $_SERVER['REMOTE_ADDR'] &&
$data["hash"] == $_COOKIE[self::$cookie_name]);
}
catch (Exception $e) {
/* Do nothing */
}
}
return false;
}
}
?>
Comments