benshepherd icon

/r/badcode

benshepherd | PRO | 03/23/18 01:48:20 PM UTC | 0 ⭐ | 2103 👁️ | Never ⏰ | []
PHP |

1.5 KB

|

None

|

0 👍

/

0 👎

<?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