-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcookie_helper.php
69 lines (56 loc) · 1.67 KB
/
cookie_helper.php
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
<?php
require_once("helper.php");
require_once("crypto_helper.php");
require_once("server_helper.php");
// login, language
class CookieHelper extends MyHelper {
private $filePath = NULL;
private $separator = "%";
public function setup($filePath) {
$this->filePath = $filePath;
}
// Write
public function bake($cookie, $value, $expire=NULL) {
if($cookie === NULL || $cookie == "") {
return;
}
if($expire === NULL) {
$expire = time() + 3600 * 24 * 300; // 300 days
}
global $theBatman;
$value = $value . $this->separator . $theBatman->hache($value);
setcookie($cookie, $value, $expire, "/");
}
//
// Invalidate
public function burn($cookie) {
$this->bake($cookie, "", time() - 3600);
}
//
/**
* Get the content of a cookie.
*
* @SuppressWarnings(PHPMD.Superglobals)
*/
public function retrieve($cookie) {
if(!isset($_COOKIE[$cookie])) {
return NULL;
}
$result = $_COOKIE[$cookie];
$contents = explode($this->separator, $result, 2);
$value = $contents[0];
$mac = NULL;
if(count($contents) > 1) {
$mac = $contents[1];
}
global $theBatman;
if($mac !== NULL && !$theBatman->hache($value, $mac)) {
$this->logger->warning("Corrupted cookie: $value");
return NULL;
}
return $value;
}
}
// singleton
$theOven = new CookieHelper();
?>