63 lines
1.6 KiB
PHP
63 lines
1.6 KiB
PHP
<?php
|
|
namespace Novaconium;
|
|
class Session {
|
|
private $session;
|
|
|
|
public function __construct() {
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
$this->session = &$_SESSION; // Reference $_SESSION to keep them in sync
|
|
if (!isset($this->session['token'])) {
|
|
$this->setToken();
|
|
}
|
|
if (!isset($this->session['messages'])) {
|
|
$this->session['messages'] = []; // Always ensure messages is an array
|
|
}
|
|
if (!isset($this->session['formData'])) {
|
|
$this->session['formData'] = []; // Initialize formData
|
|
}
|
|
if (!isset($this->session['errors'])) {
|
|
$this->session['errors'] = []; // Initialize errors
|
|
}
|
|
}
|
|
|
|
public function setToken() {
|
|
$this->session['token'] = bin2hex(random_bytes(32));
|
|
}
|
|
|
|
public function set($key, $value) {
|
|
$this->session[$key] = $value;
|
|
}
|
|
|
|
public function get($key) {
|
|
return isset($this->session[$key]) ? $this->session[$key] : null;
|
|
}
|
|
|
|
public function flash($key) {
|
|
$return = $this->get($key);
|
|
$this->delete($key);
|
|
return $return;
|
|
}
|
|
|
|
public function debug() {
|
|
return $this->session;
|
|
}
|
|
|
|
public function delete($key) {
|
|
if (isset($this->session[$key])) {
|
|
unset($this->session[$key]);
|
|
}
|
|
}
|
|
|
|
public function write() {
|
|
// No need to assign to $_SESSION since $this->session is a reference
|
|
session_write_close();
|
|
}
|
|
|
|
public function kill() {
|
|
$this->session = [];
|
|
$_SESSION = [];
|
|
session_destroy();
|
|
}
|
|
} |