-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSession.php
More file actions
92 lines (72 loc) · 1.97 KB
/
Session.php
File metadata and controls
92 lines (72 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
namespace khokonc\mvc;
class Session
{
public const FLASH_KEY = 'flash_messages';
private const TOKEN = '_token';
public function __construct()
{
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
$flashMessages = $_SESSION[self::FLASH_KEY] ?? [];
foreach ($flashMessages as $key => &$flashmessage) {
$flashmessage['remove'] = true;
}
$_SESSION[self::FLASH_KEY] = $flashMessages;
$this->setToken();
}
public function setToken()
{
if(empty($this->getToken())){
$this->set(self::TOKEN, $this->getRandomString(30));
}
}
public function getToken()
{
return $this->get(self::TOKEN);
}
public function setFlashMessage($key, $message)
{
$_SESSION[self::FLASH_KEY][$key] = [
"remove" => false,
"message" => $message
];
}
public function getFlashMessage($key)
{
return $_SESSION[self::FLASH_KEY][$key]["message"] ?? false;
}
public function set($key, $value)
{
$_SESSION[$key] = $value;
}
public function get($key)
{
return $_SESSION[$key] ?? false;
}
public function remove($key)
{
unset($_SESSION[$key]);
}
private function getRandomString($n)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $n; $i++) {
$index = rand(0, strlen($characters) - 1);
$randomString .= $characters[$index];
}
return $randomString;
}
public function __destruct()
{
$flashMessages = $_SESSION[self::FLASH_KEY] ?? [];
foreach ($flashMessages as $key => &$flashMessage) {
if ($flashMessage['remove']) {
unset($flashMessages[$key]);
}
}
$_SESSION[self::FLASH_KEY] = $flashMessages;
}
}